最新第3章习题答案讲课教案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3-1
1. AX=0048H,AX=0702H
2. AX=0059H, AX=0411H, AX=0107H,DL=04H
3. AX=0011H, AX=0107H
4.AX=005AH, AX=0900H, AX=0908H
5. AL=62H
6. AX=0248H
3-2
stack segment stack 'stack'
dw 32 dup(0)
stack ends
data segment
BVAR DB 99H
data ends
code segment
begin proc far
assume ss: stack , cs: code, ds: data
push ds
sub ax, ax
push ax
mov ax, data
mov ds, ax
MOV AL, BVAR
MOV CL, 4
SHR AL, CL
MOV AH, 10
MUL AH
AND BVAR, 0FH
ADD BVAR, AL
ret
begin endp
code ends
end begin
先将2位压缩BCD数转换为非压缩BCD数,再用AAD指令将非压缩BCD数转换为二进制数:MOV AL, BVAR
MOV AH, AL
MOV CL, 4
SHR AH, CL
AND AL, 0FH
AAD
MOV BVAR, AL
3-3
stack segment stack 'stack'
dw 32 dup(0)
stack ends
data segment
W1 DW 0807H
W2 DW 0609H
B3 DB 2 DUP(0)
data ends
code segment
begin proc far
assume ss:stack,cs:code,ds:data
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
MOV AX, W1 ;AX=0807H
SUB AL,BYTE PTR W2 ;AL=FEH, CF=1
AAS ;AL=08H, AH=07H
MOV B3, AL
MOV AL,AH
SUB AL,W2+1
MOV B3+1,AL
ret
begin endp
code ends
end begin
还可以用AAD指令将两个非压缩BCD数转换为二进制数,相减后再用AAM将差转换为非压缩BCD数:MOV AX, W2
AAD
MOV DX,AX
MOV AX,W1
AAD
SUB AX,DX
AAM
MOV BYTE PTR B3,AX
3-4
stack segment stack 'stack'
dw 32 dup(0)
stack ends
data segment
D1 DD 06070809H
D2 DD 04050607H
OBF DB 6 DUP(0)
data ends
code segment
begin proc far
assume ss:stack,cs:code,ds:data
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
MOV SI,0
MOV DI,OFFSET OBF+5
MOV BYTE PTR[DI],'$'
MOV CX,4
XOR AH,AH
AGAIN: MOV AL, BYTE PTR D1[SI]
ADD AL, BYTE PTR D2[SI]
ADD AL,AH
MOV AH,0
AAA
ADD AL,30H
DEC DI
MOV [DI],AL
INC SI
LOOP AGAIN
AND AH,AH
JZ N5
DEC DI
MOV BYTE PTR[DI],'1'
N5: MOV DX,DI
MOV AH,9
INT 21H
ret
begin endp
code ends
end begin
3-5
stack segment stack 'stack'
dw 32 dup(0)
stack ends
data segment
W1 DW 8931H
W2 DW 5678H
OBF DB 6 DUP(0)
data ends
code segment
begin proc far
assume ss:stack,cs:code,ds:data
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
MOV DI,0
MOV AL, BYTE PTR W1 ;AL=31H
ADD AL, BYTE PTR W2 ;AL=A9H, CF=0, AF=0
DAA ;AL=09H, CF=1
MOV AH, AL
MOV AL, BYTE PTR W1+1 ;AL=89H
ADC AL, BYTE PTR W2+1 ;AL=E0H, CF=0, AF=1
DAA ;AL=46H, CF=1
PUSHF
MOV DI OFFSET OBF+5
MOV BYTE PTR[DI], '$'
MOV CL,4
XCHG AH,AL
AGAIN: MOV DL,0FH