微机原理及接口技术-习题答案内容摘要:

程序汇编等。 源程序汇编后指示性语句不生成目标代码,所以常被称为伪指令。  指令性语句 指令性语句是可执行语句,是 8088/8086CPU 的指令。 源程序汇编后指令性语句生成目标代码。 第 3 章中介绍的所有指令都是指令性语句的主体,其操作数最多只能有两个。 3. 汇编语言源程序的基本结构是什么。 解: 汇编语言源程序由若干段 组成 : 数据段、附件数据段、堆栈段和代码段 等 , 段与段之间的顺序可以 随意排列 , 每一段由 SEGMENT 开始 , 以 ENDS 结束 , 每段的开始和结束都附有相同的名字。 一个程序一般定义三个段:数据段、堆栈段和代码段,必要时增加定义附加数据段,能独立运行的程序至少包含一个代码段。 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,10H,0020H,1048H 微机原理及接口技术习题及答案 13 5. 画出 下面 数据段汇编后的 内存图, 并标出 变量的位置。 DATA SEGMENT AA EQU 78H AA0 DB 09H,2,45H,2 DUP( 01H,。 ) ,’ AB’ AA1 DW 2,34H+AA AA2 DD 12H ;双字类型 DATA ENDS 解:如图所示。 6. 设程序中的数据定义如下 : NAME DB 30 DUP( ?) LIST DB 1, 8, 3, 2 ADDR DW 30 DUP( ?) ( 1) 取 NAME 的偏移地址放入 SI ( 2) 取 LIST 的 前 两个字节 存 入 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 SHOW115 ⑶ (SHOW0/SHOW2) MOD SHOW1 ⑷ SHOW1 OR SHOW0 解:( 1) SHOW0 X 100+55=200X100+55 ⑵ SHOW0 AND SHOW115=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 AL, 0 09HFEH45H01H?HAA0AA1AA0FEHFFHACH00H12H00H00H00H01H?41H42H微机原理及接口技术习题及答案 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)的个数,并将统计的结果存放到 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,DX 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 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 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 ② 地址表传送,需要传送的参数较多时可以利用存储单元传送。 在调用子程序前,把所有参数依次送入地址表,然后将地址表的首地址作为子程序入口参数传递给子程序。 ③ 堆栈传送,这种方式要审慎注意堆栈的变化情况。 13. 过程定义的一般格式是什么。 子程序开始处为什么常用 PUSH 指令。 返回前用POP 指令。 解: 格式见 P90, 如果一个子程序被多次调用,保护与恢复(主程序)现场就非常重要。 主程序每次调用子程序时,主程序的现场不会相同,保护与恢复现场的工作就只能在子 程序中进行。 原则上,在子程序中,首先把子程序中要用到的寄存器、存储单元、状态标志等压入堆栈或存入特定空间中,然后子程序才可以使用它们,使用完后再将它们弹出堆栈或从特定空间中取出,恢复它们原来的值,即恢复主程序现场。 保护和恢复现场常使用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 ;字符串地址 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+ SPBP BP BP+ IP IP+ [BP+4]SI CL CH [BP+6]DI BL BH 微机原理及接口技术习题及答案 17 JNE DONE MOV SI, [BP+4] DEC WORD PTR[SI] MOV SI, DI DEC DI REP MOVSB DONE: POP DI POP SI POP BP RET DELCHAR ENDP CODE ENDS END START 解:从字符串中删去多余的 ‘ X’ 字符。 15. 显示两位压缩 BCD 码值( 0~99),要求不显示前导 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 MOV 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, STRING LEA CX, LENG 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。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。