Professional Documents
Culture Documents
EXERCCIO 1:
(P1) Qual o valor do ponteiro de instrues IP logo aps a entrada no Debug? E dos
registradores de
uso geral?
IP = 0100
AX=0000
BX=0000
CX=0000
DX=0000
Programa 1 - EX1.COM
13C6:0100 B80000
MOV AX,0000
13C6:0103 056745
ADD AX,4567
13C6:0106 A30002
MOV [0200],AX
13C6:0109 C70600020100 MOV WORD PTR [0200],0001
13C6:010F C70602020200 MOV WORD PTR [0202],0002
13C6:0115 C70604020300 MOV WORD PTR [0204],0003
13C6:011B BB0200
MOV BX,0002
13C6:011E BE0200
MOV SI,0002
13C6:0121 31C0
XOR AX,AX
13C6:0123 03060002
ADD AX,[0200]
13C6:0127 31C0
XOR AX,AX
13C6:0129 03870002
ADD AX,[BX+0200]
13C6:012D 31C0
XOR AX,AX
13C6:012F 03870002
ADD AX,[BX+0200]
13C6:0133 31C0
XOR AX,AX
13C6:0135 03800002
ADD AX,[BX+SI+0200]
13C6:0139 31C0
XOR AX,AX
13C6:013B 0300
ADD AX,[BX+SI]
13C6:013D 0000
ADD [BX+SI],AL
(P2) Explique por que, ao assemblar esse cdigo com o Debug, possvel omitir o prefixo
word ptr na terceira linha de programa (e tambm em todas as instrues add
experimente!), mas no nas trs linhas subsequentes.
Porque quando o destingo um registrador ele j de 16 bits e palavra word serve para
alocar 16 bits
(P4) Qual a diferena entre as instrues mov ax,0 e xor ax,ax ? Qual a vantagem de se utilizar uma ou outra?
mov ax,0 e xor ax,ax
a diferena que na mov ax,0 estamos atribuindo 0 a ax, ja o comando xor ax,ax no
depende de uma constante por isso vantajosa ocupando menos espao e sendo mais
rpida
(P5) Descubra o comprimento em bytes de seu arquivo e salve-o com o comando w (write),
no sem antes ajustar os registradores BX:CX para o comprimento desejado.
bx=00 cx=3c
EXERCCIO 2:
Programa 2 - DATER.COM
13C6:0100 BA8200
MOV DX,0082
13C6:0103 BF8200
MOV DI,0082
13C6:0106 B00D
MOV AL,0D
13C6:0108 B90C00
MOV CX,000C
13C6:010B F2
REPNZ
13C6:010C AE
SCASB
13C6:010D C645FF00
MOV BYTE PTR [DI-01],00
13C6:0111 B43D
MOV AH,3D
13C6:0113 B002
MOV AL,02
13C6:0115 CD21
INT 21
13C6:0117 720E
JB
0127
13C6:0119 89C3
MOV BX,AX
13C6:011B B457
MOV AH,57
13C6:011D B001
MOV AL,01
13C6:011F B90000
MOV CX,0000
13C6:0122 BA2102
MOV DX,0221
13C6:0125 CD21
INT 21
13C6:0127 B8004C
MOV AX,4C00
13C6:012A CD00
INT 00
(P7) De que forma voc determinou o tamanho do arquivo para salv-lo aps t-lo digitado?
verifiquei o ultimo endereo de memria e o primeiro, fazendo a subtrao entre eles
encontramos a quantidade de endereos ocupados
(P8) O que o PSP de um programa, qual o seu tamanho e que dados so armazenados
nele a par-tir do offset 80 h? (Dica: consulte o QuickHelp).
Program segment prefix, O PSP um segmento de 256 bytes criado pelo Sistema
Operacional quado o programa carregado. Neste segmento esto vrias informaes teis
como as strings passada via linha de comando por exemplo.
(P9) Como funcionam as instrues scasx (x=b,w,d)? Por que CX foi carregado com o valor
12?
Compara o byte, palavra ou palavra dupla especificado com o operando de memria com o
valor
na AL(scasb), AX(scabw), ou registrador EAX(scasd).
JMP 0140
db 0d,0a,"Data alterada com sucesso!",0d,0a,"$"
db 0d,0a,"Houve um erro. codigo = XX",0d,0a,"$"
13C6:0140 BA8200
MOV DX,0082
13C6:0143 BF8200
MOV DI,0082
13C6:0146 B00D
MOV AL,0D
13C6:0148 B90C00
MOV CX,000C
13C6:014B F2
REPNZ
13C6:014C AE
SCASB
13C6:014D C645FF00 MOV BYTE PTR [DI-01],00
13C6:0151 B43D
MOV AH,3D
13C6:0153 B002
MOV AL,02
13C6:0155 CD21
INT 21
13C6:0157 723B
JB
0194
13C6:0159 89C3
MOV BX,AX
13C6:015B B457
MOV AH,57
13C6:015D B001
MOV AL,01
13C6:015F B90000
MOV CX,0000
13C6:0162 BA2102
MOV DX,0221
13C6:0165 CD21
INT 21
13C6:0167 7324
JNB 018D
13C6:0169 89C3
MOV BX,AX
13C6:016B 80E4F0
AND AH,F0
13C6:016E 88E7
MOV BH,AH
13C6:0170 88D8
MOV AL,BL
13C6:0172 240F
AND AL,0F
13C6:0174 88C3
MOV BL,AL
13C6:0176 80C730
ADD BH,30
13C6:0179 80C330
ADD BL,30
13C6:017C 883E3B01 MOV [013B],BH
13C6:0180 881E3C01 MOV [013C],BL
13C6:0184 B409
MOV AH,09
13C6:0186 BA2101
MOV DX,0121
13C6:0189 CD21
INT 21
13C6:018B EB07
JMP 0194
13C6:018D B409
MOV AH,09
13C6:018F BA0201
MOV DX,0102
13C6:0192 CD21
INT 21
13C6:0194 B8004C
MOV AX,4C00
13C6:0197 CD00
INT 00