Você está na página 1de 33

ARQUITETURA DE COMPUTADORES

AULA_15
ARQUITETURA DE COMPUTADORES

LINGUAGEM C X LINGUAGEM ASSEMBLY

CONDIÇÃO INICIAL

AH AL BH BL CH CL DH DL SP SI DI
X BASE BASE
A DE Y DE X

C STRCPY:
PUSH AX
COPIA DE STRING [ES:DI] <- [DS:SI]
SUB AL,AL DI <- DI + 1
VOID STRCPY( CHAR X[ ], CHAR Y[ ])
VOLTA: SI <- SI + 1
{ MOV AH,[SI]
INT I;
≠ CMP AH,AL
I=0; JP Z FIM

WHILE (X[I] = Y[I] != 0) MOVS


JMP VOLTA
I = I + 1;
FIM:
}
POP AX
EXERCICIO 27 ARQUITETURA DE COMPUTADORES
1. “COMPILE” USANDO APENAS UMA INSTRUÇÃO DE DESVIO
CONDIÇÃO INICIAL

AX BX CH CL DH DL SP SI DI
J BASE DO VETOR TEMP K I
A
C
WHILE (SAVE[I] = = K)
I = I + J;
ARQUITETURA DE COMPUTADORES

EXERCICIO 27– CONTINUAÇÃO


2. “COMPILE” A FUNÇÃO
CONDIÇÃO INICIAL
AH AL BX CH CL DH DL SP SI DI
BASE DO VETOR K

A
C
SWAP ( INT V[ ], INT K )
{
INT TEMP;
TEMP = V[K]
V[K] = V[K +1]
V[K+1] = TEMP;
}
EXERCICIO 27 – CONT. ARQUITETURA DE COMPUTADORES
3. “COMPILE” A FUNÇÃO NUMERO DE ELEMENTOS DO VETOR
(NUMERO POSITIVO SEM SINAL)
CONDIÇÃO INICIAL

AH AL BX CX DH DL SP SI DI
TEMP BASE DO VETOR N I J
C A

SORT ( INT V[ ], INT N )


{
INT I,J;
FOR (I = 0; I < N; I = I +1)
{
FOR ( J = I –1; J 0 && V[J] > V[J+1]; J = J-1 )
{
SWAP (V,J);
}
}
}
SUB DX,DX
EXERCICIO 27: ADD SI, DX
INSTRUÇÕES PERMITIDAS PARA USO NESTE JP S D_EXITSWITCH
EXERCICIO MOV DX,4
FACT: CMP SI,DX
PUSH DX
PUSH CX JP NC D_EXITSWITCH
PUSH CX
PUSH AX JMP [BX] [ 2 * SI]
ADD DL, CH
MOV CH,1 L0:
ADD CL, DH CMP CL,CH MOV AH,AL
SUB DL, CL JP NC DESVIO ADD AH,CL

MOV AH,DL MOV DL,1 JMP D_EXITSWITCH


POP AX L1:
POP CX
POP CX MOV AH,CH
POP DX
RET ADD AH,CL
ADD CH,[BX][SI] RET
DESVIO: JMP D_EXITSWITCH
ADD AL,CH
SUB CL,1 L2:
ADD AL,BL CALL FACT MOV AH,CH
ADD AL,BH ADD CL,1 SUB AH,CL

ADD AH,CH MOV AL,CL JMP D_EXITSWITCH


MUL DL L3:
SUB AL,AH
MOV DL,AL MOV AH,AL
ADD CH,[BX][12]
POP AX SUB AH,C
ADD CH,[BX][8]
POP CX JMP D_EXITSWITCH
CALL EXEMPLO RET D_EXITSWITCH:
EXERCICIO 27: INSTRUÇÕES PERMITIDAS
PARA USO NESTE EXERCICIO

CMP AH,AL CMP AH,AL STRCPY:


JP NZ L1 JP Z L1 PUSH AX
MOV BH,BL MOV BH,BL SUB AL,AL
ADD BH,CL ADD BH,CL VOLTA:
JMP L2 L1: MOV AH,[SI]
L1: MOV BH,BL SUB BH,AH CMP AH,AL
SUB BH,CL JP Z FIM
L2: MOVS
MOV DH,BH DLOOP: JMP VOLTA LOOP:
ADD DH,BL CMP [BX][SI],DL FIM: ADD DL,[BX][SI]
MOV AH,CH JP NZ SEGUE POP AX ADD SI,AX
ADD AH,CL ADD SI,AX RET CMP SI,CX
SUB DH,AH JMP DLOOP JP NZ LOOP
SEGUE:
RELEMBRANDO... CPU 8088 ARQUITETURA DE COMPUTADORES
X16 + R.END

16 +1/-1
RD DADOS

CS RASC PC FIFO
UNID. DE #RP (LEIT. PILHA)
BIU B. 1
#WP (ESCR. PILHA)
CONTROLE F (PILHA CHEIA)
E (PILHA VAZIA)
N3(NO DE BYTES
B. 1 X16 N2 NA
+ N1 PILHA)
16 RASC1
20 N0
DS ES SS T3 B.END
R.END
EU B. 2 16

B.DADOS 8 RASC2
SP SI DI
=,
+1, B. 5
-1

AX BX CX DX T1 T2 IR

FZ 8
ALU
FC B. 3
20 BITS B. 4 8
R.DADOS
16 BITS

8 BITS RD
UNID. DE CONTROLE WR
1 BIT
ARQUITETURA DE COMPUTADORES

RELEMBRANDO ...CPU ACESSANDO INSTRUÇÕES E DADOS

ESPAÇO ENDEREÇAVEL
1 M BYTES

SEGMENTO DE
64K BYTES

END. INICIAL DO SEGMENTO

TIPOS DE SEGMENTOS
CODIGO PILHA DADOS EXTRA DE DADOS

OBS: OS SEGMENTOS PODEM SER SUPERPOSTOS , OU NÃO.


ARQUITETURA DE COMPUTADORES

RELEMBRANDO...CPU ACESSANDO INSTRUÇÕES E DADOS

END. INICIAL DO SEGMENTO


CODIGO PILHA DADOS EXTRA DE DADOS

CS X 16 SS X 16 DS X 16 ES X 16

OFFSET NO SEGMENTO
CODIGO PILHA DADOS EXTRA DE DADOS

IP SP BX DI DI

BP SI DESL

POSSIBILIDADES:
[BX], [SI], [DI], [DESL]
[BX] [SI], [BX] [DI], [BX] [DESL]
[SI] [DESL], [DI] [DESL]
[BX] [SI] [DESL], [BX] [DI] [DESL]
ARQUITETURA DE COMPUTADORES

RELEMBRANDO...FLAGS DE STATUS

C
O
ALU
A
Z
S
P
ARQUITETURA DE COMPUTADORES

RELEMBRANDO...REGISTRADORES VISIVEIS PELO


PROGRAMADOR

16 BITS

AX BX CX DX 8 BITS

H L H L H L H L 16 BITS

BP SP IP SI DI

CS DS SS ES 16 BITS
ARQUITETURA DE COMPUTADORES

OUTROS FLAGS DE STATUS


FLAG D, FLAG I , FLAG T
SERÃO ABORDADOS EM
INSTRUÇÃO STD FAZ D=1 OUTRO SLIDE
INSTRUÇÂO CLD FAZ D=0

[ES:DI] <- [DS:SI]


D DIREÇÃO DI <- DI + 1 I INTERRUPÇÃO
SI <- SI + 1

D =0 E MOVSB
T TRAP

D =1 E MOVSB
[ES:DI] <- [DS:SI]
DI <- DI - 1
SI <- SI - 1
ARQUITETURA DE COMPUTADORES

DEFINE A INSTRUÇÃO
FORMATO DAS INSTRUÇÕES
DEFINE OS OPERANDOS
1 BYTE
0
CODIGO DA INSTRUÇÃO

20 BYTE BYTE DE ENDEREÇAMENTO

30 BYTE DADO IMEDIATO (DIL) OU END. IMEDIATO (EIL)

40 BYTE DADO IMEDIATO (DIH) OU END. IMEDIATO (EIH)

DADO IMEDIATO (DIL)


50 BYTE
END. IMEDIATO DADO IMEDIATO (DIH)
60 BYTE
EXEMPLOS DADO IMEDIATO

ADD AL,CL 2 BYTES

MOV [BX][SI][043A] , 1209 6 BYTES

MOV BL, 02 3 BYTES

DADO IMEDIATO
ARQUITETURA DE COMPUTADORES

FORMATO DAS INSTRUÇÕES

10 BYTE CODIGO DA INSTRUÇÃO

CODIGO DA INSTRUÇÃO |D|W TAMANHO DOS


OPERANDOS
0 : BYTE
SELEÇÃO DE 1 : WORD
OPERANDOS
PROXIMO
SLIDE
ARQUITETURA DE COMPUTADORES
D W

FORMATO DAS INSTRUÇÕES

20 BYTE BYTE DE ENDEREÇAMENTO INSTR OP1, OP2

MOD REG R/M D=0 MOD E R/M DEFINEM OP1


D=1 MOD E R/M DEFINEM OP2
__ ___ ___

OPERANDO EM MEMORIA OPERANDO EM REGISTRADOR

R/M MOD 00 MOD 01 MOD 10 MOD 11 REG


W=0 W=1 W=0 W=1
000 [BX][SI] [BX][SI][EIL] [BX][SI][EIHEIL]
AL AX AL AX
001 [BX][DI] [BX][DI][EIL] [BX][DI][EIHEIL]
CL CX CL CX
010 [BP][SI] [BP][SI][EIL] [BP][SI][EIHEIL]
DL DX DL DX
011 [BP][DI] [BP][DI][EIL] [BP][DI][EIHEIL]
BL BX BL BX
100 [SI] [SI][EIL] [SI][EIHEIL]
AH SP AH SP
101 [DI] [DI][EIL] [DI][EIHEIL]
CH BP CH BP
110 [EIH][EIL] [BP][EIL] [BP][EIHEIL]
DH SI DH SI
111 [BX] [BX][EIL] [BX][EIHEIL]
ARQUITETURA DE COMPUTADORES
D W

ACESSO A MEMORIA
FORMATO DAS INSTRUÇÕES

ADD AL,CL
20 BYTE BYTE DE ENDEREÇAMENTO INSTR OP1, OP2

MOD REG R/M D=0 MOD E R/M DEFINEM OP1


MOV [BX],AL
D=1 MOD E R/M DEFINEM OP2
__ ___ ___

OPERANDO EM MEMORIA OPERANDO EM REGISTRADOR

R/M MOD 00 MOD 01 MOD 10 MOD 11 REG


ACESSO A MEMORIA W=0 W=1 W=0 W=1
000 [BX][SI] [BX][SI][EIL] [BX][SI][EIHEIL]
AL AX AL AX
001 [BX][DI] [BX][DI][EIL] [BX][DI][EIHEIL]
CL CX CL CX
010 [BP][SI] [BP][SI][EIL] [BP][SI][EIHEIL]
DL DX DL DX
011 [BP][DI] [BP][DI][EIL] [BP][DI][EIHEIL]
BL BX BL BX
100 [SI] [SI][EIL] [SI][EIHEIL]
AH SP AH SP
101 [DI] [DI][EIL] [DI][EIHEIL]
CH BP CH BP
110 [EIH][EIL] [BP][EIL] [BP][EIHEIL]
DH SI DH SI
111 [BX] [BX][EIL] [BX][EIHEIL]
EXERCICIO 28 ARQUITETURA DE COMPUTADORES
SABENDO QUE O CAMPO CODIGO DA INSTRUÇÃO MOV É 100010, QUAIS OS CODIGOS DE
MAQUINA DAS INSTRUÇÕES ABAIXO?

MOV AL,BL MOV BL,AL MOV AX,BX MOV [BX][03],AL MOV AL,[BX][089A]
EXERCICIO 28 -SOL
ARQUITETURA DE COMPUTADORES
SABENDO QUE O CAMPO CODIGO DA INSTRUÇÃO MOV É 100010, QUAIS OS CODIGOS DE
MAQUINA DAS INSTRUÇÕES ABAIXO?

MOV AL,BL MOV BL,AL MOV AX,BX MOV [BX][03],AL MOV AL,[BX][089A]
10001000 10001010 10001000 10001010 10001001 10001011 10001000 10001010

11011000 11000011 11000011 11011000 11011000 11000011 01000111 10000111


00000011 10011010

88 8A 88 8A 89 8B 88 00001000

D8 C3 C3 D8 D8 C3 47 8A
03 87
9A
08
EM HEXADECIMAL
ARQUITETURA DE COMPUTADORES
DEBUG – DEPURADOR SIMPLES

COMANDOS
Q SAIR DO DEBUG
R EXIBIR E ALTERAR CONTEUDO DE REGISTRADOR
A INSERIR INSTRUÇÕES EM ASSEMBLY NA MEMORIA
D LISTAR END´s DE MEM. E RESPECTIVOS CONTEUDOS
U TRANSFORMA COD. DE MAQUINA EM ASSEMBLY
E ENTRADA DE INSTRUÇÕES OU DADOS EM HEXADECIMAL
T EXECUÇÃO PASSO A PASSO E EXIBIÇÃO DOS REG´s
G EXECUÇÃO ATÉ UM PONTO DE PARADA E EXIBIÇÃO
ARQUITETURA DE COMPUTADORES

OVERF: OV/NV , DIR: UP/DW , INT:EI/DI , SINAL: PL/NE


ZERO: ZR/NZ , CAUX: AC/NA , PARID: PE/PO,CARRY: CY/NC

DEBUG – DEPURADOR SIMPLES


DADO
END. DA INSTR.

COMANDO R
INSTRUÇÃO
COD. MAQUINA

ASSEMBLY

END DO DADO
ARQUITETURA DE COMPUTADORES

IP :0100

DEBUG – DEPURADOR SIMPLES

COMANDO A
ARQUITETURA DE COMPUTADORES

DEBUG – DEPURADOR SIMPLES

COMANDO D
ARQUITETURA DE COMPUTADORES

DEBUG – DEPURADOR SIMPLES

COMANDO U
ARQUITETURA DE COMPUTADORES

DEBUG – DEPURADOR SIMPLES

COMANDO E
ARQUITETURA DE COMPUTADORES

DEBUG – DEPURADOR SIMPLES

COMANDO T
ARQUITETURA DE COMPUTADORES

DEBUG – DEPURADOR SIMPLES

COMANDO G
ARQUITETURA DE COMPUTADORES

RESUMO DOS COMANDOS


INSTRUÇÕES ARQUITETURA DE COMPUTADORES
ANEXO-1

1 MOV REGD,REGO 16 XCHG [REGD] ,REGO 31 SBBC REGD,REGO

2 MOV REGD,[REGO] 17 XLAT REG 32 SBB REGD, NO

3 MOV [REGD] ,REGO 18 LEA REGD,[REGO] 33 SUB REGD,[REGO]

4 MOV REGD, NO 19 CBW 34 SBB REGD,[REGO]

5 MOV [REGD] , NO 20 CWD 35 SUB [REGD] ,REGO

6 MOV REGSEGD,REGO 21 ADD REGD,REGO 36 SBB [REGD] ,REGO

7 MOV REGD,REGSEGO 22 ADD REGD, NO 37 NEG REG

8 MOVSB 23 ADC REGD,REGO 38 NEG [REG]

9 LODSB 24 ADC REGD, NO 39 CMP REGD,REGO

10 STOSB 25 ADD REGD,[REGO] 40 CMP REGD, NO

11 MOVSW 26 ADC REGD,[REGO] 41 CMP REGD,[REGO]

12 LODSW 27 ADD [REGD] ,REGO 42 CMP [REGD] ,REGO

13 STOSW 28 ADC [REGD] ,REGO 43 CMPSB

14 XCHG REGD,REGO 29 SUB REGD,REGO 44 CMPSW

15 XCHG REGD,[REGO] 30 SUB REGD, NO 45 SCASB


INSTRUÇÕES ARQUITETURA DE COMPUTADORES
ANEXO-1

46 SCASW 61 DIV [REG] 76 TEST REGD,[REGO]

47 INC REG 62 IDIV [REG] 77 TEST [REGD] ,REGO

48 INC [REG] 63 AND REGD,REGO 78 TEST REGD, NO

49 DEC REG 64 AND REGD,[REGO] 79 NOT REG

50 DEC [REG] 65 AND [REGD] ,REGO 80 NOT [REG]

51 SAL REG, CL 66 AND REGD, NO 81 SHL REG, CL

52 SAL [REG], CL 67 OR REGD,REGO 82 SHL [REG], CL

53 SAR REG, CL 68 OR REGD,[REGO] 83 SHR REG, CL

54 SAR [REG], CL 69 OR [REGD] ,REGO 84 SHR [REG], CL

55 MUL REG 70 OR REGD, NO 85 ROL REG, CL

56 IMUL REG 71 XOR REGD,REGO 86 ROL [REG], CL

57 MUL [REG] 72 XOR REGD,[REGO] 87 ROR REG, CL

58 IMUL [REG] 73 XOR [REGD] ,REGO 88 ROR [REG], CL

59 DIV REG 74 XOR REGD, NO 89 RCL REG, CL

60 IDIV REG 75 TEST REGD,REGO 90 RCL [REG], CL


INSTRUÇÕES ARQUITETURA DE COMPUTADORES
ANEXO-1

91 RCR REG, CL 106 JNGE DISP 121 RET

92 RCR [REG], CL 107 JNG DISP 122 RET NL

93 JMP SEG: OFFSET 108 JO DISP 123 RET NHNL

94 JMP OFFSET 109 JNO DISP 124 RET NL

95 JMP DISP 110 JS DISP 125 RET NHNL

96 JMP REG 111 JNS DISP 126 INT TIPO

97 JMP [REG] 112 JP DISP 127 INT 3

98 JA DISP 113 JNP DISP 128 INTO

99 JAE DISP 114 LOOP DISP 129 IRET

100 JNAE DISP 115 LOOP Z DISP 130 PUSH REG

101 JNA DISP 116 LOOPNZ DISP 131 PUSH REGSEG

102 JE DISP 117 CALL SEG: OFFSET 132 PUSH PSW

103 JNE DISP 118 CALL OFFSET 133 PUSH [REG]

104 JG DISP 119 CALL DISP 134 POP REG

105 JGE DISP 120 RET 135 POP REGSEG


INSTRUÇÕES ARQUITETURA DE COMPUTADORES
ANEXO-1

136 POP PSW 151 HLT

137 POP [REG] 152 NOP

138 STC 153 LOCK

139 CLC 154 REP

140 CMC 155 REPZ

141 STD 156 REPNZ

142 CLD 157 SEG REGSEG

143 STI

144 CLI

145 LAHF

146 SAHF

147 IN REG,PORTA

148 IN REG, DX

149 OUT REG,PORTA

150 OUT REG, DX


ARQUITETURA DE COMPUTADORES

EXERCICIO 29
1. FAÇA UM PROGRAMA PARA SOMAR 2 NUMEROS DE 16 BITS, UM
ARMAZENADO A PARTIR DO ENDEREÇO 0020:0A00 E OUTRO A
PARTIR DO ENDEREÇO 0040:0AE1.
2. FAÇA UM PROGRAMA PARA VERIFICAR SE O BIT 3 DO ENDEREÇO DE
MEMORIA OOO4:5271 ESTÁ EM NIVEL 1 OU EM NIVEL 0
3. FAÇA UM PROGRAMA PARA SOMAR OS CONTEUDOS DOS ENDEREÇOS
DE MEMORIA 0020:8012, 0020:8013, 0020:8014, 0020:8015,
LEVANDO EM CONTA APENAS OS 8 BITS MENOS SIGNIFICATIVOS DA
SOMA. O RESULTADO DEVE SER ARMAZENADO EM COMPLEMENTO A
2 NO ENDEREÇO 0020:8016.
4. FAÇA UM PROGRAMA PARA MULTIPLICAR 2 NUMEROS SEM SINAL DE
8 BITS, UM ARMAZENADO A PARTIR DO ENDEREÇO 0140:CC00 E
OUTRO APARTIR DO ENDEREÇO 0140:CD01. O RESULTADO DEVE SER
ARMAZENADO NOS ENDEREÇOS 0140:CE01 E 0140:CE02.
O PROGRAMA DEVE USAR O ALGORITMO DE SOMAS SUCESSIVAS E O
RESULTADO PARCIAL DEVE SER ARMAZENADO NOS ENDEREÇOS
0230:0401 E 0230:0402.

Você também pode gostar