微机原理及接口技术习题解答与实验指导 下载本文

4)从偏移地址为1000H开始的内存中取出双字送人BX和DS 中。 【解】

1) MOV BX, [ 1000H] 2) LEA BX, [ 1000H] 3) MOV SI, [ SI] 4 LDS Bx, [ 1000H]

22. 设有:DS = 2000H,BX =0100H,SI=0002N, (21200H)= 4C2AH, (21202H)= 8765H。试求执行以下各条指令以后,AX寄存器的内容是什么? 1 ) MOV AX, 1200H z) MOV AX, [ 1200H] 3) Mov AX, 1100[ BX]

4) Mov AX, 1100[ BX] [ SI] 【解】

1 ) AX = 1200H 2 ) AX = 4C2AH 3 ) AX = 4C2AH 4) AX = 8765H

23. 试写出下面程序段中每条指令执行后AL的值及OF、SF、ZF、CF、AF和PF等状态标 志的变化。 XOR AL, AL MOV AL,7FH ADD AL, 1 ADD AL,80H MOV AH, 2 SUB AL, AH 【解】

XOR AL, AL MOV AL,7FH ADD AL, 1 ADD AL, 80H MOV AH,2 SUB AL, AH 解

; AL = 00H, OF =0, SF = 0, ZF = 1 , CF = 0, AF = 0, PF = 1 ; AL = 7FH , OF =0, SF =0, ZF = 1 , CF = 0, AF = 0, PF = 1 ; AL = 80H, OF = 1, SF =1, 2F= 0, CF =0, AF = 1 , PF = 0 ; AL =00H, OF = 1, SF= 0, ZF = 1, CF = 1, AF = 0, PF = 1 ;AL=00H OF =1、SF =0、ZF =1、CF=l、AF =0、PF =1 ; AL = 0FEH, OF = 0, SF = 0, ZF = 0, CF= 1, AF =1, PF = 0

24,设 AX= AA55H, 写出下面程序段中每条指令执行后 AX =?CF =? SHR AL,1 RCL AX,1 MOV CL,3 SAL AX, CL ROL AH, 1 SAR AL,1 ROR AL, CL SHL Ax,1 RCR AH, CL

37

【解]

SHR AL, 1 ; AX = AA2AH , CF = 1 RCL AX, 1 ; AX = 5455H , CF = 1 MOV CL, 3 ; AX = 5455H, CF = 1 SAL AX, CL ;AX = A2A8H , CF= 0 ROL AH,1 ; Ax = 45A8H , CF=1 SAR AL, 1 ; Ax = 45D4H , CF= 0 ROR AL, CL : AX = 459AH, CF ~-1 SHL Ax,1 ; AX = 8B34H, CF=0 RCR AH, CL ; AX = D134H, CF = 0

25. 已知 AX =AA55H,BX =55AAH在执行下列各指令后,AX =? 1) NOT AX 2) NEG AX 3) AND AX, BX 4) OR AX, BX 5) XOR AX, BX 6) CMP AX,BX 7) TEST AX,80H 8) OR AX,80H 9) AND AX,0FH 10)XOR AX,0FH 【解】

1) 55AAH 2)55ABH 3)0000H 4)FFFFH

5)FFFFH 6)AA55H 7)AA55H 8)AAD5H 9)0005H 10)AA5AH

26. 试写出能完成下列各操作功能的指令或程序段。 1)将累加器 AX 清零,同时进位标志CF清零。

2)将 DS:[1000H】字节单元内容与寄存器CL 内容相加后存入DS:[2000H]字节单 元。

3)不用立即数,也不用存储单元,完成 AL←OFFH,BL←0,CL←1。 4)取 AX的低4位。

5)将 BX的高8位置1,其他位不变。 6)把标志寄存器中溢出位OF变反。 【解】

1) XOR AX, AX 或者 AND AX,0 2)ADD CL,DS:[1000H] MOV DS:[2000H],CL

3) XOR CL,CL ;CL=0,CF=0 MOV BL,CL ;BL=0 MOV AL,CL ;AL=0 NOT AL ;AF=FFH INC CL ;CF=D1H 4) AND AX,000FH 5) OR BX,0FF00H 6) PUSHF POP AX

38

XOR AX,800H PUSH AX POPF

27. 根据下列各要求,写出程序段。 1)判断AL为负,则转至NEXT。

2)判断字节变量DAI为 0,则转至NEXT。 3)判断AL的D1位为 1,则转至NEXT。

4)判断字变量DA1的D1位为 0,则转至NEXT。

5)比较AH与字节变量DA1中的数,若AH不等于DA1,则转至 NEXT。 6)比较字节变量DA1与字符“A”,若DA1≥“A”,则转至NEXT。 【解】

1) OR AL, AL JS NEXT 3) TEST AL, 2 JNZ NEXT 5) CMP AH, DA1 JNE NEXT 2) CMP DA1, 0 JZ NEXT

4)TEST DA1, 0002H JZ NEXT 6) CMP DA1 , ' A' JAE NExT

3.6. 分析程序题

1. 写出下面每条指令执行以后,有关寄存器的内容。 XOR Ax, AX

MOV AX, 0ABCDH INC AX MOV CL,4 SHR AL, CL XOR AX, 0FFFH OR AX 6000H MOV SP,0100H PUSH AX POP BX 【解】

AX = 0000H Ax = 0ABCDH AX = 0ABCEH CL = 04H AX = 0ABCH AX = 0543H AX = 6543H SP=0100H SP =00FEH

39

BX = 6543H

2. 设初值AX = I234H, CX = 0004H,在执行下列程序段后,AX =? AND AX, AX JZ DONE SHL CX,1

ROR AX, CL JMP LP

DONE. ROL AX, CL LP: NOP [解]

AND AX,AX ;AX=1234H

JZ DONE ;为0,转DONE,非0,则顺序执行。 SHL CX,1 ;CX=0008H ROR AX,CL ;AX=3412H JMP LP

DONE: ROL AX,CL ;AX=2341H LP;NOP

程序段之行后 Ax =3412H

3 阅读下面程序后,回答指定问题。 LEA SI,BUF MOV CX, 100 CLD

LP1; LODSB CMP AL, 39H JE LP2 LOOP LP1 LMP LP3 LP2:…..

问:1)该程序完成的功能是什么?

2)程序执行完后,若CX≠0,则程序转移到哪里? 3]程序执行完后,如果CX =0,则程序转移到哪里?

解】查找BUF起始的100个字节数据中有无39H,有则转LP2,无则转到LP3 2)若CX≠0,程序转移到LP2击执行。 3} 如果CX =0,程序转移到LP3去执行。 4阅读下面子程序后,回答指定问题。 SUB1 PROC FAR TEST AL,80H JE LP1

TEST BL,80H JNE LP2 JMP LP3 LP1: TEST BL,80H JE LP2

LP3: XCHG AL,BL LP2: RET SUB1 ENDP

40