最新第3章习题答案讲课教案

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档