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

问:

1)子程序的功能是什么?

2)如调用前AL=88H,BL =77Hl 则在返回时,AL =?,BL =? 解

1)该子程序功能是测试AL和BL内容是否为异号数。若是,则互相变换;若不是,则 不改变。

2)若在调用前 AL =88AH,BL=77H,则在返回时,AL =77H,BL=88H 5 阅读程序段,说明程序段执行后转移到哪里? MOV AX, 1379H MOV BX, 8ACEH ADD AX, BX JNO LI JNC L2 JMP L3

解 本题意为 AX+ BX无溢出则程序转到L1,有溢出但没进位程序将转移L2,否则程 序转移到L3。由于1379H + 8ACEH无茁出则程序转到L1. 6.阅读程序段,说明程序段执行后转移到哪里? MOV AX, 8765H MOV BX, 1234H SUB AX, BX JNO L1 JNC L2 JMP L3 8. 2) CLD

LEA DI, [ 0404H] MOV CX, 0080H XOR AX, AX RER STOSW 3)MOV CX, 10 MOV AL,0 MOV BL, AL IP:ADD AL, BL INC BL LOOP LP 【解】

1)将 Fiist开始的10个字节传送到Second处。 2)将偏移量为 0404H开始即80H个字单元清0。 3)计算0~9之和,结果为55。

3.7 编程题

1. 有 3个无符号数分别在AL、BL、CL 中. 其中有两个相同,编写一程序找出不相同的数 并送人DL中。 【解】

CMP AL, BL JNZ LI MOV DL, CL

41

JMP L3

L1. CMP AL, CL JNZ L2

MOV DL, BL JMP L3 L2: MOV DL, AL L3: HLT

AL 与BL比较 AL≠BL,转去L1

AL = BL,则CL一定是不同数,将 CL存入 DL 转结束

AL 与CL 比较

AL≠BL,且AL≠CL,则 AL一在是不同数

AL≠BL. 但 AL = CL,则BL一定是不同数,将 BL存人 DL 转结束

:将AL存入OL

2. 设在DA开始的单元中存放有一4字节的有符号补码数,高字节存在轻高地址单元。编一 个程序段,完成求出此 4字节的有符号补码数的绝对值,并存人ABS开始的单元。 [解} 分析:将4字节的有符号补码数从内存取出后,首先判符号位,正教的绝对值就是 其本身,负数的绝对值需要求出相应的原码,去掉负号即为绝对值。 START: LEA BX, DA MOV AX, [ BX] MOV DX, [ BX+ 2] OR DX, DX JNS LP1 NOT AX NOT DX ADD Ax.1 ADC Dx, 0 OR DX, 8000H LP1: LEA BX, ABS MOV [BX], AX MOV [BX+ 2], Dx HLT

3. 编写程序实现将首地址为 STR、长度为 N 的字符串顺序颠倒 (如图 3-1所示) 【解]

R-STR; LEA SI. STR MOV CX, N MOV DI, SI ADD DI, Cx DEC Dl

SHR Cx,1 ;(CX)=N/2 NEXT:MOV AL, [ Sl] XCHG AL, [ Dl] MOV [S I ],AL INC SI DEC DI

42

LOOP NExT HLT STR

图 3-1 示意图

4. 采用至少两种方洁编程实现,将段地址为 I000H,偏移地址为 I00H开始的100个字单元 清为0■

【解 1 分析:可以采用MOV指令实现,也可以采用串操作指令STOSW实现。 方法 1: MOV Ax, 1000H MOV DS, AX MOV SI, 100H

MOV CX,100 XOR AX, AX

LP: MOV [ SI], Ax ADD SI, 2 LOOP LP HLT

;AX = 1000H

;给段寄存器 DS 赋值 ;设置地址指针 ;设置循环次数 ;AX: 0

;将字单元清 0 ;字地址指针加 2

;CX = CX - 1,若CX≠0转到LP 方法2:

Mov AX, 1000H MOV ES,Ax MOV DI, 100H

XOR AX, Ax Mov CX, 100 CLD

REP STOSW HTL

令DF =0,设置串操作中指针增加

ES:[DI]-Ax,循环执行 cx欢,且每次DI 自动加2

5 编写一个程序段,将 AL 中的各位顺序完全颠倒后存入AH,如 AL =II0I00I0B,AH = 0100101IB,

【解】采用的算法为将 AL 中各位依次从低 位移出,同时将移出位从低位向高位移人 0 AH中 (如图3.2所示),编程思路为:

1)设置循环计数器CX←8,令AH←0。

2)利用SHR指令将 AL右移一次。

43

第四章

8. 8086宏汇编有三种基本语句,不包括 ( )。

A 宏指令语句 已 多字节语句 C. 指令语句 D. 伪指令语句

[解1 B

9. 标号和变量都不具有 ( } 的属性。

凡 段属性 B. 偏移属性 C. 操作属性 D:类型属性 [解] c

10. 下列伪指令中不能用来定义变量的是 ( )。 A, BYTE B. DB C. DD D. DW [解]A

1 1. 在运算椅PTR表达式中不能出现的类型是 ( )。

A. DB B. NEAR C. FAR D. WORD E.BYTE 【解]A

12. 汇编语言中变量名的有效长度为 ( )个宇符。 A.8 B.15 C.16 D. 31 [解I D

13. 对于8086指令系统,汇编语言程序一个段的最大长度是 ( )K字节■ A.8 B.16 C.32 D.64 [解]D

14. 汇编语言中标识符的组成规则表述不正确的是 ( ).

44