收藏 分享(赏)

微机原理及接口技术-习题答案.pdf

上传人:HR专家 文档编号:11314679 上传时间:2020-03-16 格式:PDF 页数:35 大小:482.90KB
下载 相关 举报
微机原理及接口技术-习题答案.pdf_第1页
第1页 / 共35页
微机原理及接口技术-习题答案.pdf_第2页
第2页 / 共35页
微机原理及接口技术-习题答案.pdf_第3页
第3页 / 共35页
微机原理及接口技术-习题答案.pdf_第4页
第4页 / 共35页
微机原理及接口技术-习题答案.pdf_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、第一章习题及答案 1. 微处理器内部包含哪 三大部分? 解: 运算器、 控制器和寄 存器组。 2. 完成下列数制的转换 10101101B= ( )D= ( )H 解:10101101B=173D=ADH 。 0.11B= ( )D 解:0.11B=0.75D 。 211.25=( )B =( )H 解:211.25=11010011.01B=D3.4H 。 10111.0101B=( )H=( )BCD 解:10111.0101B=17.5H=23.3125D= (0010 0011.0011 0001 0010 0101)BCD 3. 已知 X=+1011010B ,Y=0011011B,

2、设机器 数为8 位,分 别写出X 、Y 的原码、反 码和补码。 解: 01011010B 01011010B 01011010B X X X = = = 原 反 补 10011011B 11100100B 11100101B Y Y Y = = = 原 反 补4. 已知 X 的真值为 32,Y 的真值为19,求 ? Y X = + 补解: 00001101B XY += 补5. 已知 X=51 , Y=86, 用补码完成下列运算, 并判断是否产生溢出 (设字长为8 位 )。 X Y X Y X Y X Y 解: 10100011B,因为 67 CC0 = , 所以未产生溢出。 X 补=0011

3、0011B Y 补=Y 反+1=11010110 反+1=10101001+1=10101010B X+Y 补=X 补+Y 补=00110011B+10101010B=11011101B X+Y=X+Y 补 补=11011101 补=10100010+1=10100011B 微机原理及接口技术习题及答案 2 11110111B,因为 67 C C1 = , 所以产生溢出。 01110111B , 因为 67 C C1 = ,所以产生溢出。 00100011B,因为 67 CC0 = , 所以未产生溢出。 6. 若使与门的输出端输出高电平,则各输入端 的状态是什么? 解:各输入端为高电平。 7.

4、 若使与非门的输出端输出低电平,则各输入 端的状态是什么? 解:各输入端为高电平。 8. 如果 74LS138 译码器的 Y 4 端输出低 电平,则 C 、B 、A 三个输入 端的状态分别是什 么? 解:C 、B 、A 三个输入端的状态分别是1 ,0 ,0 。 微机原理及接口技术习题及答案 3 第二章习题及答案 1. 8086/8088CPU 由哪两大功能部分所组成?简 述它们的主要功能? 解:8086/8088CPU 由 EU 和 BIU 两大功能部分组成。 执行单元 EU 主要完成指令的译码和执行。执行 单元通过 EU 控制电路从 BIU 中取出 指令,经过指令译码 形成各种定时控制信号,

5、向 EU 内各功能部件发出相 应的控制命令, 以完成指令所规定的 操作。 总线接口单元 BIU 是 8086/8088 同外部联系 的接口。它负责所有涉及 外部总线的 操作,包括取指令、 读操作数、写操作数、地 址转换和总线控制等。BIU 内部设置指令预 取 队列,每当指令队 列有两个或两个以上的字 节空间,且执行单元未向 BIU 申请读/ 写存 储器操作数时,BIU 顺序地预取后续指令的代码 ,并填入指令队列中。当 EU 执行的是转 移指令时,则 BIU 清除当前的指令预取队列的 内容,从新的地址取回指 令,并立即送到 EU 去执行,然 后,从后续的指令序列中取回指 令填满队列。 2. 什么

6、是指令流水线?指令流水线需要哪些硬 件支持? 解:指令流水线是指 8086/8088CPU 内部 的执行单元 EU 和 总线接口单元 BIU 通过指令 预取队列协同工作从 而实现指令的并行执行。 指令流水线最主要的硬件 支持是 BIU 内 部的 指令预取队列。 3. 逻辑地址如何转换成物理地址?已知逻辑地 址为 2D1EH :35B8H,对应的物理地址 是什么? 解:逻辑地址是段基址和 段内偏移地址形式的 地址。 物理地址段基址 16 段内偏移 已知逻辑地址为 2D1EH :35B8H,则对应的物理地址 2D1EH 16 35B8H 30798H = + = 4. 8088 和 8086 的指

7、令预取队列的长度分别是 多少? 解:8088 的指令预取队列 的长度为 4 字节;8086 的指令预取队列的长度为 6 字节。 5. 简述 8086/8088CPU 内部的各寄存器的作用 。 解:AX 、BX 、CX 和 DX 通用寄存器一般用于存 放参与运算的数据或运算 的结果。 SP:用于存放堆栈栈顶 的段内偏移量。 BP :用 于存放访问内存时的偏移地址。 SP 和 BP 也可以用来存放数据,它们的默认段 寄存器都是 SS 。 SI 和 DI 通常在间接寻 址方式中存放操作数的偏 移地址。在串操作指令中 ,DI 的默认段 寄存器是 ES 。SI 和 DI 也可以用来存放数据。 CS :

8、代码段寄存器,用于存放代码段的段基址 。 DS:数据段寄存器,用于存放数据段的段基址 。 SS:堆栈段寄存器,用 于存放堆栈段的段基址 。 ES:附加段寄存器,用于存放附加段的段基址 。 IP:指令指针寄存器,用于存放 CPU 即将执行的下一条指令在代码段中 的段内偏移地 址。 FLAGS :标志寄存器,用于存放指令执行结果的 特征。 6. 8086/8088CPU 内部的状态标志寄存器共有几 位标志位?各位的含义是 什么? 微机原理及接口技术习题及答案 4 解:状态标志寄存器共有 9 位标志位,其中包含 6 个状态标志位和 3 个控制标志位。 状态标志位: CF (Carry Flag ):

9、进位标志。当算术运算结果 使最高位产生进位或借位 时,则 CF=1;否则 CF=0 。 PF (Parity Flag ) :奇偶标志。若运算结果中的低 8 位含有偶数个 1 ,则 PF=1 ;否 则 PF=0 。 AF (Auxiliary carry Flag ):辅助进位标志。运算 过程中若 D3 位向 D4 有进位或借 位时,AF=1 ;否则 AF=0 。 ZF (Zero Flag ):零标志。若运算结果为 0 ,则 ZF=1 ;否则 ZF=0 。 SF (Sign Flag ):符号标志。若运算结果为负,则 SF=1;否则 SF=0 。 OF (Overflow Flag ):溢出

10、标志。当带符号数的 补码运算结果超出机器所 能表达 的范围时,就会产生 溢出,这时 OF=1 ;否则 OF=0 。 控制标志位: DF (Direction Flag ) :方向标志。控制串操作指令 的地址变化的方向。当 DF=0 时, 串操作指令的地址指 针按增量变化;当 DF=1 时,串操作指令的地址指针 按减量变 化。 IF (Interrupt Flag ):中断允许标志。控制微处 理器是否允许响应可屏蔽 中断请 求。若 IF=1 ,则允许响 应;否则禁止响应。 TF (Trap Flag ):单步标志。TF=1 时,CPU 工作在单步方式。 7. 8086/8088 系统中存储 器的

11、分段原则是什么? 解:分段原则是要求段的 起始单元的物理地址是 16 的整数倍,每段的物 理长度为 64KB 。 8. 当 ALE 有效时,8088 的地址/ 数据总线上将出现什么信息? 解:当 ALE 有效时,8088 的地址/ 数据总线上将出现地址信息。 9. READY 管脚的作用是什么? 解:READY 用于微处理器时序中插入等待状态 。若该引脚被置为低电平 ,则微处理器 进入等待状态并保持 空闲;若该引脚被置为高 电平,则它对微处理器的 操作不产生影 响。 CPU 在读、写操作时 序中的 T3 时钟周期开始 处,通过检测 READY 管脚的状态来决定 是否插入 T W 等待时钟周期,

12、以解决 CPU 与存储器或 I/O 接口之间速度不匹 配的矛盾。 10. 为什么在基于 8086/8088 的系统中经常需要 使用缓冲器? 解:由于基于 8086/8088 的系统驱动能力的不 足,需要使用缓冲器。 11. 8088 工作在最小 模式下包含哪些控制信号 ? 解:最小模式下包含的控 制信号有: RD 、WR 、IO/M 、ALE、DT/R 、DEN 和 INTA 等信 号。 12. 若 CS=4000H,则当 前代码段可寻址的存储 空间范围是多少? 解:CS=4000H 时,当前代码段可寻址的存储空 间范围为 40000H4FFFFH 。 微机原理及接口技术习题及答案 5 第三章

13、习题及答案 1. 什么叫寻址方式?8086 指令系统中有哪几种寻 址方式? 解:寻址方式,即获 得地址的方法,主要指获 得段内偏移地址的方法, 段基址常采用 默认方式获得。8086CPU 指令系统的寻址方式 有两类:获得指令中操作 数地址的方法。 获得要执行的下一条 指令的地址的方法。 8086 指令系统 中有 8 种操作 数 寻址方式,立即 寻址。 2. 下列指令中 BUFF 为字节类型变量 , DATA 为常量 , 指出下列指令中源操作 数的寻 址方式: (1 )MOV AX, 1200 (2 )MOV AL, BUFF (3 )SUB BX, 2000H (4 )MOV CX, SI (

14、5 )MOV DX, DATASI (6 )MOV BL, SIBX (7 )MOV DI, AX (8 )ADD AX, DATADI+BP (9 )PUSHF (10)MOV BX, ES:SI 解: (1 )MOV AX, 1200 ; 立 即寻址 (2 )MOV AL, BUFF ; 直 接寻址 (3 )SUB BX, 2000H ; 直接寻 址 (4 )MOV CX, SI ; 寄存器 间接寻址 (5 )MOV DX, DATASI ; 寄存器 相对寻址 (6 )MOV BL, SIBX ; 基址变 址寻址 (7 )MOV DI, AX ; 寄存器 寻址 (8 )ADD AX, DA

15、TADI+BP ; 基址变 址相对寻址 (9 )PUSHF ; 隐含寻址 (10)MOV BX, ES:SI ; 寄存器间接 寻址 3. 指出下列指令的错误 并改正。 (1 )MOV DS, 1200 (2 )MOV AL, BX (3 )SUB 33H, AL (4 )PUSH AL (5 )MUL 45H (6 )MOV BX, SI (7 )MOVS BYTE PTRDS:DI, BYTE PTR DS:SI (8 )ADD DATADI+BP, ES:CX (9 )JMP BYTE PTRSI (10)OUT 3F8H, AL 解 : (1 )MOV DS, 1200 ; 不能用 立即

16、数给段基址寄存器赋值 (2 )MOV AL, BX ; 操作数 类型不一致 微机原理及接口技术习题及答案 6 (3 )SUB 33H, AL ; 立即数 不能作为目的操作数 (4 )PUSH AL ; 压栈指令的 操作数必须是字类型 (5 )MUL 45H ; 乘法指令中 的操作数不能是立即数 (6 )MOV BX, SI ; 源和目的操 作数不能同时为内存操作数 (7 )MOVS BYTE PTR DS:DI, BYTE PTR DS:SI ; 目的操作数应该在 ES 段。 (8 )ADD DATADI+BP, ES:CX ;CX 不能做间址寄存器使用 (9 )JMP BYTE PTRSI

17、; 操作数必须 是字类型 (10)OUT 3F8H, AL ;16 位的端口地 址不能直接在输入输出指令中使 用。 4. 根据要求写出一条( 或几条)汇编语言指令。 (1 )将立 即数 4000H 送入寄 存器 BX 。 (2 ) 将立 即数 4000H 送入段 寄 存器 DS 。 (3 ) 将变 址寄 存器 DI 的内 容 送入 数据 段中 2000H 的存储 单元 。 (4 )把 数据 段中 2000H 存储 单 元的 内容 送段 寄存器 ES 。 (5 ) 将立 即数 3DH 与 AL 相 加 ,结 果送回 AL 。 (6 )把 BX 与 CX 寄存 器内容 相 加, 结果 送入 BX

18、。 (7 )寄 存器 BX 中 的低 4 位内容 保持 不变,其他 位按位 取 反, 结果 仍在 BX 中。 (8 ) 实现 AX 与-128 的乘积 运 算。 (9 ) 实现 CX 中高 、低 8 位内容 的交 换。 (10 )将 DX 中 D0 、D4 、D8 位置 1,其 余位 保持 不变 。 解: (1 ) 将立即 数 4000H 送 入寄存器 BX 。 MOV BX,4000H (2 ) 将立即 数 4000H 送 入段寄存 器 DS 。 MOV AX, 4000H MOV DS, AX (3 ) 将变址寄 存器 DI 的 内容送入 数据段 中 2000H 的存储单 元。 MOV 2

19、000H,DI (4)把 数据段 中 2000H 存储单元 的内容 送段寄 存 器 ES 。 MOV AX,2000H MOV ES,AX (5)将 立 即数 3DH 与 AL 相加 ,结果送 回 AL 。 ADD AL,3DH (6)把 BX 与 CX 寄存器 内容相加 ,结果 送入 BX 。 ADD BX,CX (7 ) 寄存器 BX 中的 低 4 位内容保 持不变, 其他位 按位取反 ,结果 仍在 BX 中。 MOV AX, BX, NOT AX AND AX,0FFF0H AND BX,000FH OR BX,AX (8)实 现 AX 与-128 的 乘积运算 。 MOV BX,-12

20、8 IMUL BX (9)实 现 CX 中高 、低 8 位内容的 交换。 MOV AL,8 微机原理及接口技术习题及答案 7 ROL CX AL (10 )将 DX 中 D0 、D4 、D8 位置 1 ,其余 位保持不变。 0R DX,0111H 5. 设 SS=2000H ,SP=1000H ,SI=2300,DI=7800,BX=9A00H 。说明执行下面每条指 令时,堆栈内容的变 化和堆栈指针的值。 PUSH SI PUSH DI POP BX 解:PUSH SI (0FFFH )=23H (0FFEH )=00H SP=0FFEH PUSH DI (0FFDH )=78H (0FFCH

21、 )=00H SP=0FFCH POP BX BX=7800H SP=0FFEH 6. 内存中 18FC0H 、 18FC1H 、 18FC2H 单元的内容分别为 23H 、 55 、 5AH ,DS=1000H , BX=8FC0H ,SI=1 ,执行下面两条指令后 AX= ?DX=? MOV AX, BX+SI LEA DX, BX+SI 解:AX=5A55H DX=8FC1H 7. 回答下列问题: (1 )设 AL=7FH,执行 CBW 指令 后,AX=? (2 )设 AX=8A9CH, 执行 CWD 指 令后,AX= ?DX=? 解:(1 )设 AL=7FH ,执行 CBW 指令后,A

22、X=007FH (2 )设 AX=8A9CH, 执行 CWD 指 令后,AX=8A9CH DX=FFFFH 8. 执行以下两条指令后 ,FLAGS 的 6 个状态标志位的值是什么? MOV AX, 847BH ADD AX, 9438H 结果为 118B3H 解 :CF=1 PF=0 (为运算结果 的低 8 位 奇偶 ) AF=1 ZF=0 SF=0 OF=1 9. 下面程序段将 03E8H 转换成十进制数并显示, 填写指令后的空格。 MOV AX, 03E8H ;AH= 03H , AL= E8H MOV CX, 4 MOV DI, 2000H ;DI= 2000H MOV BX, 10 ;

23、BH= 00 , BL= 0AH GO0: SUB DX, DX ;CF= 0 , ZF= 1 微机原理及接口技术习题及答案 8 DIV BX ;AX= 64H , DX= 0 MOV DI, DL ;DI= 0 INC DI LOOP GO0 ;CX= 3 MOV CX, 4 GO1: DEC DI ;DI= 2003H MOV DL, DI ;DL=01 OR DL, 30H ;DL= 31H MOV AH, 02 ; 显示 1 位 十进制数 1 INT 21H LOOP GO1 10. 用串操作指令替换以 下程序段: ABC:MOV AL, SI MOV ES:DI, AL INC SI

24、 INC DI LOOP ABC 解:REP MOVSB 11. 设 AX=AAH , 顺序执行下列各条指令,填写空格 。 (1 )XOR AX, 0FFFFH ;AX= (2 )AND AX, 13A0H ;AX= (3 )OR AX, 25C9H ;AX= (4 )TEST AX, 0004H ;AX= 解: (1 )XOR AX, 0FFFFH ;AX= FF55H (2 )AND AX, 13A0H ;AX= 00A0H (3 )OR AX, 25C9H ;AX= 25EBH (4 )TEST AX, 0004H ;AX= 00AAH 12. 试写出执行下列 3 条指令后 BX 寄存器

25、的内容 。 MOV CL ,2H MOV BX ,CO2DH SHR BX ,CL 解: BX=300BH 13. 执行下列程序段后,AX 、BX 的内容各是什么? (1) MOV AX,0001H MOV BX,8000H NEG AX ;0-0001H MOV CX,4 AA :SHL AX,1 RCL BX,1 LOOP AA HLT 解:AX=FFF0H BX=000FH 微机原理及接口技术习题及答案 9 (2)MOV AX,0 MOV BX ,1 MOV CX ,100 A : ADD AX ,BX INC BX LOOP A HLT 解:AX=8080H BX=0101H 14.

26、编写程序段,实现下 述要求: (1 ) 使 AX 寄存器的低 4 位清 0 ,其余位不变。 (2 ) 使 BX 寄存器的低 4 位置 1 ,其余位不变。 (3 ) 测试 AX 的第 0 位和第 4 位,两位都是 1 时将 AL 清 0 。 (4 ) 测试 AX 的第 0 位和第 4 位,两位中有一个为 1 时将 AL 清 0 。 解: (1)使 AX 寄存器 的低 4 位清 0,其余位 不变。 AND AX, 0FFF0H (2 ) 使 BX 寄存器 的低 4 位置 1 , 其余位不 变。 OR AX, 0FH (3)测试 AX 的第 0 位 和第 4 位 ,两位都是 1 时将 AL 清 0

27、。 TEST AX,01H JZ AA TEST AX,10H JZ AA MOV AL,0 HLT AA: (4)测试 AX 的第 0 位 和第 4 位 ,两位中有 一个为 1 时将 AL 清 0 。 TEST AX, 11H JZ AA MOV AL,0 AA: . 15. 编写程序段,完成把 AX 中的 16 进制数转换为 ASCII 码,并将对应的 ASCII 码依 次存入 MEM 开始 的存储单元中。 例如,当 AX 的内容为 37B6H 时,MEM 开始的 4 个 单元的内容依次为 33H ,37H ,42H ,36H 。 解 : MOV CX,4 LEA SI,MEM ADD S

28、I,3 ;SI 指向 MEM+3 CC: MOV BX,AX ; 保存原 始数据 AND AX, 000FH ; 取个位 数 CMP AL, 9 JA AA ; 在 AB 之间 就加 37H 微机原理及接口技术习题及答案 10 ADD AL,30H ; 在 09 之间就加 30H JMP BB AA: ADD AL,37H BB: MOV SI,AL ; 保存 ASCII 值 DEC SI PUSH CX MOV AX,BX MOV CL,4 SHR AX,CL ;准备取下一 个数 POP CX LOOP CC 16. 编写程序段,求从 TABLE 开始的 10 个无符号数的和,结果放在 SU

29、M 单元中 。 解 : LEA SI,TABLE MOV CX,10 XOR AX,AX NEXT: ADD AL,SI ADC AH,0 INC SI LOOP NEXT MOV SUM,AX 17. 编写程序段,从键盘 上输入字符串 HELLO ,并在串尾加结束标志$ 。 解 : LEA DX,STRING ;设置字符串 存放缓冲区 首地址 MOV AH ,0AH ;调用 10 号功能, 输入字符 串 INT 21H MOV CL,STRING+1 ; 实际 键入的字 符个数送 CL XOR CH,CH ADD DX, 2 ADD DX,CX ; 得到字符 串尾地址 MOV BX,DX M

30、OV BYTE PTRBX,$ 18. 编写程序段,在屏幕 上依次显示 1 、2 、3 、A 、B 、C 。 解: LEA BX,STR ;STR 为 6 个 字符的存放 区域首 地址 MOV CX,6 LPP: MOV AH,2 MOV DL,BX INC BX INT 21H ;利用 2 号功能调 用依次先生 6 个字符 LOOP LPP 19. 编写程序段,在屏幕 上显示字符串“Hello World ”。 解: LEA DX,STRING ; STRING 字 符的存放区域首 地址 MOV AH,09H INT 21H ; 利用 9 号 功能调用 显示字符 串 微机原理及接口技术习题及

31、答案 11 20. 编写程序段,把内存 中首地址为 MEM1 的 200 个字节送到首地址为 MEM2 的区 域。 解 : MOV AX ,SEG MEM1 MOV DS ,AX ; 设 定源串段 地址 MOV AX ,SEG MEM2 MOV ES ,AX ; 设 定目标串 段地址 MOV SI ,0 ; 设 定源串偏 移地址 MOV DI ,0 ; 设 定目标串 偏移地址 MOV CX ,200 ; 串 长度送 CX CLD ;(DF )=0 , 使地址 指针按增 量方向修 改 REP MOVSB ; 每 次传送一 个字节, 并自动 HLT 21. 编写程序段, 以 4000H 为起始地址

32、的 32 个单元中存有 32 个有符号数, 统计其中 负数的个数,并将统 计结果保存在 BUFFER 单元中。 解 :START: MOV DI,OFFSET BUFFER XOR AL,AL MOV DI,AL MOV SI,4000H MOV CX,32 AA: MOV AL,SI OR AL,AL JNS X1 INC DI X1: INC SI NEXT:LOOP AA HLT 微机原理及接口技术习题及答案 12 第四章习题及答案 1. 什么叫汇编?汇编语 言源程序的处理过程是什 么? 解: 任何 CPU 都只能执行机器语言程序。 汇编语言不是机器语言, 汇编语言程序必须 通过具有“翻

33、译”功 能的系统程序的处理,处 理的过程称为汇编。 汇编语言源程序经过 汇编生成机器语言目标程 序, 简称目标程序。 目标程序经过 连接程序连接,就得 到可执行的机器语言程序 文件。 2. 汇编语言的语句类型 有哪些?各有什么特点? 解:汇编语言的语句 类型有两种:指示性语句 和指令性语句。指示性语 句可以位于任 何段中,指令性语句 必须位于代码段内。 指示性语句 又称为伪操作语句, 它不是 8088/8086CPU 的指令,它与汇编程序(assembler ) 有关。指示性语句的 功能主要是变量定义、为 数据分配存储空间、告诉 汇编程序如何 对源程序汇编等。源 程序汇编后指示性语句不 生成目

34、标代码,所以常被 称为伪指令。 指令性语句 指令性语句是可执行 语句,是 8088/8086CPU 的指令。源程序汇编后指令 性语句 生成目标代码。第 3 章中介绍的所有指令都是 指令性语句的主体,其操 作数最多只能 有两个。 3. 汇编语言源程序的基 本结构是什么? 解: 汇编语言源程序由若干段组成: 数 据段、 附件数 据段、 堆栈段 和代 码段 等 , 段与 段之间的顺序可以 随意排 列 , 每一段由 SEGMENT 开始, 以 ENDS 结束, 每段的开始 和结束都附有相同的 名字。 一个程序一般定义三 个段: 数据段、 堆栈段和代码段, 必 要时增加定义附加数 据段,能独立运行的程序

35、 至少包含一个代码段。 4. 写出完成下述要求的 变量定义的语句: (1 ) 为缓冲区 BUFF 保留 200 个字节的内存空间 (2 ) 将字符串BYTE ,WORD 存放于某数据区 (3 ) 在数据区中存入下列 5 个数据:2040H,0300H,10H,0020H,1048H 解: (1 )为缓冲区 BUFF 保 留 200 个字节的内存 空间 BUFF DB 200 DUP(?) (2 )将字符串BYTE ,WORD 存放于某数 据区 DB BYTE,WORD (3 )在数据区 中存入下列 5 个数据:2040H,0300H,10H,0020H,1048H DW 2040H,0300H

36、,10H,0020H,1048H 微机原理及接口技术习题及答案 13 5. 画出下面数据段汇编 后的内存图,并标出变量 的位置。 D ATA SEGMENT AA EQU 78H AA0 DB 09H,-2,45H,2 DUP (01H, ?),AB AA1 DW -2,34H+AA AA2 DD 12H ;双 字 类型 D ATA ENDS 解:如 图所 示。 6. 设程序中的数据定义 如下: NAME DB 30 DUP (? ) LIST DB 1 ,8,3 ,2 ADDR DW 30 DUP (? ) (1 ) 取 NAME 的 偏移 地址 放入 SI (2 ) 取 LIST 的 前两

37、个 字节 存 入 AX (3 ) 取 LIST 实际 长度 解:(1 )取 NAME 的偏 移地 址 放入 SI MOV SI,OFFSET NAME (2 )取 LIST 的前 两个 字节 存入 AX MOV AX,WORD PTR LIST (3 )取 LIST 实际 长度 MOV AX,SIZE LIST ;P85 7. 依据下列指示性语句 ,求表达式的值。 SHOW0 EQU 200 SHOW1 EQU 15 SHOW2 EQU 2 SHOW0X100+55 SHOW0 AND SHOW1-15 (SHOW0/SHOW2) MOD SHOW1 SHOW1 OR SHOW0 解:(1 )

38、 SHOW0 X 100+55=200X100+55 SHOW0 AND SHOW1-15=C8H AND 0FH - 0FH = 0;减 法 的优 先级 过于 AND (SHOW0/SHOW2 )MOD SHOW1=100 MOD 15=10 SHOW1 OR SHOW0=0FH OR C8H=CF 8. 编写程序,统计寄存器 BX 中二进制位“1” 的个数,结果存在 AL 中。 DATA SEGMENT NUM DW ? DATA ENDS CODE SEGMENT ASSUME CS :CODE ,DS :DATA START : MOV AX ,DATA MOV DS ,AX MOV

39、AL ,0 09H FEH 45H 01H ?H AA0 AA1 AA0 FEH FFH ACH 00H 12H 00H 00H 00H 01H ? 41H 42H微机原理及接口技术习题及答案 14 MOV BX ,NUM ; 把数 X 传 送给 BX MOV CX ,16 NEXT : SHL AX ,1 JNC NEXT1 INC AL NEXT1 : LOOP NEXT MOV AH ,4CH INT 21H CODE ENDS END START 9. 某 数据块存放 在 BUFFER 开始的 100 个字节单元中,试编写程序统计数 据块中正 数(不包括 0 )的个数,并将统计的结果存

40、放到 NUMBER 单元中。 解DATA SEGMENT BUFFER DB 100(?) NUMBER DB 0 DATA ENDS CODE SEGMENT ASSUME CS :CODE ,DS :DATA START : MOV AX,DATA MOV DS,AX XOR DX, DX MOV CX,100 MOV SI,OFFSET BUFFER NEXT : MOV AL,SI INC SI TEST AL,80H ;是正 数吗 ? JNZ GOON ;否, 转移 到 GOON CMP AL,0 JZ GOON INC DX GOON: LOOP NEXT MOV NUMBER,D

41、X MOV AH ,4CH INT 21H CODE ENDS END START 10. 阅读下面程序段,指 出它的功能。 DATA SEGMENT ASCII DB 30H, 31H, 32H, 33H ,34H ,35H, 36H, 37H, 38H, 39H HEX DB 04H DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS: DATA START: MOV AX, DATA 微机原理及接口技术习题及答案 15 MOV DS, AX MOV BX,OFFSET ASCII MOV AL,HEX AND AL,0FH MOV AL,BX+AL MOV

42、 DL,AL MOV AH,2 INT 21H MOV AH,4CH INT 21H CODE ENDS END START 解:这时一个查表程 序,查表取出 HEX 的 ASCII 。 并在屏幕上显示 ASCII 码 11. 某数据区中有 100 个小写字母,编程把它们转 换成大写字母,并在 屏幕 上 显示。 解:DATA SEGMENT BUFFER DB 100(?) DATA ENDS CODE SEGMENT ASSUME CS :CODE ,DS :DATA START : MOV AX,DATA MOV DS,AX MOV CX,100 MOV SI,OFFSET BUFFER

43、NEXT : MOV AL,SI INC SI CMP AL,61H ;是小 写字 母吗? JB GOON ; 否 ,转移 到 GOON (小 于则 转 移) SUB AL,20H MOV DL,AL MOV AH,2 INT 21H GOON: LOOP NEXT MOV AH ,4CH INT 21H CODE ENDS END START 12. 子程序的参数传递有 哪些方法? 解: 主程序在调用子程序 时, 要为子程序预置数据 , 在子程序返回时给出数据处 理的结果, 这称为数据传送或变 量传送。方法主要有以下 几种: 寄存器传送。 微机原理及接口技术习题及答案 16 地址表传送,需要

44、传送的参数较多时可以利 用存储单元传送。在调用 子程序前, 把所有参数依次送入 地址表,然后将地址表的首地址作为子程序入口参数传递给子程序。 堆栈传送,这种方式要审慎注意堆栈的变化 情况。 13. 过 程定义 的一般格 式是什么 ?子程 序开始处 为什么常用 PUSH 指 令?返 回前用 POP 指 令? 解:格式见 P90 , 如果一个子程序被多 次调用, 保护与恢复 (主程序) 现场就非常重要。 主程序每次调 用子程序时, 主程 序的现场不会相同, 保护与 恢复现场的工作就只能在子程 序中进行。 原则上, 在子程序中, 首先把子程序中要用到 的寄存器、 存储单元、 状态标志等压入 堆栈或存

45、入特定空间 中, 然后子程序才可以使 用它们, 使用完后再将它们弹出堆栈或 从特定空间中取出 , 恢复它们原来的值 , 即恢复主程序现场。 保护和恢复现场常使用 PUSH 和 POP 指令。 14. 阅读下面程序段,指 出它的功能。 DATA SEGMENT STRING DB Exxperience LENG DW 100 KEY DB x DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA MAIN PROC FAR START:MOV AX, DATA MOV DS, AX MOV ES, AX LEA BX, STRING ;字符

46、串地址-BX LEA CX, LENG ;字符串长-CX PUSH BX PUSH CX MOV AL, KEY CALL DELCHAR MOV AH, 4CH INT21H MAIN ENDP DELCHAR PROC PUSH BP MOV BP, SP PUSH SI PUSH DI CLD MOV SI, BP+4 MOV CX, SI MOV DI, BP+6 REPNE SCASB DI- DI+ SI+ SP-BP BP- BP+ IP- IP+ BP+4-SI CL CH BP+6-DI BL BH 微机原理及接口技术习题及答案 17 JNE DONE MOV SI, BP+

47、4 DEC WORD PTRSI MOV SI, DI DEC DI REP MOVSB DONE: POP DI POP SI POP BP RET DELCHAR ENDP CODE ENDS END START 解:从字符串中删去 多余的X 字符 。 15. 显示两位压缩 BCD 码值(099),要求不显示前导 0 。 解:DATA SEGMENT BUF DB ? ; 内存 中 的两 位压缩 BCD 码 DATA ENDS CODE SEGMENT ASSUME CS :CODE ,DS :DATA START : MOV AX,DATA MOV DS,AX MOV AL, BUF M

48、OV BL,AL NEXT: MOV CL,4 SHR AL, CL AND AL,0FH CMP AL,0 JZ GOON ADD AL,30H ;显示 高位 BCD 码 MOV DL,AL MOV AH,2 INT 21H GOON: MOV AL,BL AND AL,0FH ADD AL,30H ;显示 低位 BCD 码 MOV DL,AL MOV AH,2 INT 21H MOV AH ,4CH INT 21H CODE ENDS END START 微机原理及接口技术习题及答案 18 16. 某数据区中连续存放 着 100 个整数,要 求将其中为 0 的元素删除 ,并将保留的数 据连续存放。 解: DATA SEGMENT STRING DB 100(?) LENG DW 100 KEY DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA MAIN PROC FAR START:MOV AX, DATA MOV DS, AX MOV ES, AX LEA BX, STR

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 计算机应用/办公自动化

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报