




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第 4 章8086 CPU 汇编语言程序设计 习题 4.1汇编语言有何特点?编写汇编语言源程序时,一般的组成原则和结构是什么? 参考答案:汇编语言是一种以处理器指令系统为基础的低级程序设计语言,它采用助 记符表达指令操作码, 采用标识符号表示指令操作数, 可以直接、 有效地控制计算机硬件, 因而容易创建代码序列短小、运行快速的可执行程序。 编写汇编语言源程序时,一般的组成原则和结构如下: (1)完整的汇编语言源程序由段组成。 (2)一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段 之间的顺序可随意排列。 (3)需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只 有一个起始点。 (4)所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一 段内。 (5)通常,程序还需要一个堆栈段。 4.2简述助记符、汇编语言、汇编语言程序和汇编程序的基本概念及其异同。 参考答案:助记符:人们采用便于记忆、并能描述指令功能的符号来表示机器指令操 作码,该符号称为指令助记符。 汇编语言:用助记符表示的指令以及使用它们编写程序的规则就形成汇编语言。 汇编语言程序:用汇编语言书写的程序就是汇编语言程序,或称汇编语言源程序。 汇编程序:汇编语言编写的程序不能由机器直接执行,而必须翻译成由机器代码组成 的目标程序,这个过程称为汇编。用来把汇编语言编写的程序自动翻译成目标程序的软件 称为汇编程序(Assembler) 。常用的汇编程序是 MASM.exe。 4.3如何规定一个汇编语言程序执行的开始位置?主程序执行结束时应该如何返回 DOS?源程序在什么位置停止汇编过程? 参考答案:用标号指明规定一个汇编语言程序执行的开始位置。END 伪指令后的标 号所对应的地址即是程序开始位置。 主程序执行结束时应该利用 DOS 功能调用的 4CH 子功能来实现返回 DOS。 在源程序的 END 伪指令处,停止汇编过程。 2 4.4汇编语言程序的开发有哪 4 个步骤?分别利用什么程序完成?各步骤完成后产 生什么输出文件? 参考答案:汇编语言的程序一般要经过编辑、汇编(MASM 或 ASM) 、连接(LINK) 和调试(DEBUG)4 个步骤。 1)建立源程序文件 建立源程序文件用编辑软件完成, 常用的编辑软件有操作系统自带的编辑软件 EDIT、 记事本软件、写字板软件,以及其他文字编辑处理软件,如 Office、WPS 等。源程序文件 为“汇编语言程序.asm” 。 2)汇编(MASM 或 ASM)源程序 汇编过程是指利用汇编程序 MASM 对源程序文件进行汇编的过程。汇编程序 MASM 的主要功能:找出源程序中指令格式的错误、标号变量定义错误(存在没有定义或重复定 义标号变量) ;生成 3 个文件,即目标文件(myfile.obj,必须产生) 、列表文件(myfile.lst) 和交叉索引文件(myfile.crf) 。 3)程序连接 连接程序 LINK 将目标程序连接成可执行文件。连接程序输出两个文件:可执行文件 (扩展名为.exe)和内存分配文件(扩展名为.map) 。 4)调试程序 源程序编写后,通过汇编和连接后,即可得到在计算机系统中直接执行的二进制代码 文件,但程序执行的结果是否正确无法判断。利用 MASM 对源程序汇编时可以检测出程 序的语法错误、指令用法错误,程序执行的情况需要通过程序调试来完成。 汇编语言程序的调试可以借助于专门的调试工具软件 DEBUG 来实现。 调试成功后生 成应用程序文件。 4.5设置一个数据段,按照如下要求定义变量。 (1)STRING 为字符串变量,表示字符串“SIEE OF HNUST” 。 (2)VARB 为用十六进制数表示的字节变量,这个数的大小为 100。 (3)VARW 为 100 个未赋值的字变量 参考答案: DATASEGMENT STRINGDB SIEE OF HNUST VARBDB 100H VARW DW 100 DUP (?) DATAENDS 4.6给出下列语句,指令中立即数(数值表达式)的值分别是什么? (1)MOVAL,23H AND 45H OR 67H (2)MOVAX,1234H / 16+10H (3)MOVAX,254H SHL 4 (4)MOVAL,AAND (NOT(B-B) ) (5)MOVAX, (76543 LT 32768)XOR7654H 3 参考答案: (1)MOVAL,23H AND 45H OR 67H 23H AND 45H OR 67H = 67H (2)MOVAX,1234H / 16+10H 1234H / 16+10H = 133H (3)MOVAX,254H SHL 4 254H SHL 4 = 0230H (4)MOVAL,AAND (NOT(B-B) ) AAND (NOT(B-B) ) = 41H (5)MOVAX, (76543 LT 32768)XOR7654H (76543 LT 32768)XOR7654H= 764H 4.7过程定义的一般格式是什么? 参考答案: 过程名PROC属性 (NEAR/FAR) 过程名ENDP 子程序设计举例:编写一个延时子程序,其过程可定义如下。 DLY1PROC PUSHBX PUSHCX MOVBL,05H DLY2:MOVCX,0FFFFH WAIT:LOOPWAIT DECBL JNZDLY2 POPCX POPBX RET DLY1ENDP 4.8子程序开始为什么常使用 PUSH 指令?子程序返回前为什么使用 POP 指令? 参考答案:为了正确返回主程序,通常在子程序中 PUSH 指令和 POP 指令应该 成对使用。 PUSH 指令和 POP 指令是用于压栈和弹栈指令, 一般用于保护现场和恢复现场; 所以一般这两个语句是用于子程序,在子程序的开始第一条语句就应该是 PUSH 指令,以 保护断点 (包括程序代码段 IP 值, 寄存器 AX 的值) 。 在子程序返回之前必须用 POP 弹栈, 将断点信息返回,主程序才能继续工作。 4.9已知程序段如下: MOVAX,1234H MOVCL,4 ROLAX,CL DECAX MOVCX,4 MULCX INT20H 4 试问: (1)每条指令执行后,AX 寄存器的内容是什么? (2)每条指令执行后,CF、SF 及 ZF 的值分别是什么? (3)程序运行结束后,AX 及 DX 寄存器的值是什么? 参考答案: MOVAX,1234H ;AX 寄存器的内容是 1234H,不影响标志位。 MOVCL,4 ;AX 寄存器的内容是 1234H,CL 寄存器的内容是 4,不影响标志位。 ROLAX,CL ;AX 寄存器的内容是 2341H,CF=1,不影响符号和零标志标志位。 DECAX ;AX 寄存器的内容是 2340H,SF=0,ZF=0,不影响进位标志位。 MOVCX,4 ;AX 寄存器的内容是 2340H,CX 寄存器的内容是 4,不影响标志位。 MULCX ;AX 寄存器的内容是 8D00H,DX 寄存器的内容是 0,CF=0,不影响符号和零标志 位。 程序结束后,AX 和 DX 的内容分别是 8D00H 和 0000H。 4.10在当前数据段 1000H 开始的 128 个单元中存放一组数据, 试编程序将它们顺序 移动到 A000H 开始的顺序排列的 128 个单元中。 参考答案: DATASEGMENT ORG 1000H BEFFSDB 128 DUP(2AH) DATAENDS EDATASEGMENT ORG A000H BEFFDDB 128 DUP(?) EDATAENDS STACKSEGMENT DB 100 DUP(?) STACKENDS CODESEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK,ES:EDATA MAINPROC FAR START: PUSH DS SUB AX,AX 5 PUSH AX MOVAX,STACK MOV SS,AX PUSH DS MOV AX,DATA MOV DX,AX MOV AX,EDATA MOV ES,AX MOV CX,128 CLD MOV SI,OFFSET BUFFS MOV DI,BUFFD REP MOVSB MOV CX,128 RET MAINENDP CODEENDS END START 4.11编写一个程序,接收从键盘输入的 10 个数,输入回车符表示结束,将这些数 保存在 BUFF 缓冲区中。 参考答案: DATASEGMENT BUFF DB 10 DUP(?) DATAENDS STACKSEGMENT DB 100 DUP(?) STACKENDS CODESEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK,ES:DATA START: PUSH DS SUB AX,AX PUSH AX MOVAX,DATA MOV DS,AX LEA DI,BUFF MOV CX,10 NEXT:MOVAH,01H 6 INT 21H;从键盘上接收单个字符 CMPAL,0DH;与 0DH(回车符)比,判是否要结束 JZ EXIT SUB AL,30H;否则,将 09 的 ASCII 码转换为十进制数 MOV DI,AL INC DI LOOP NEXT EXIT:MOVAX,4C00H;退出并返回 DOS INT 21H CODEENDS END START 4.12在当前数据段(DS) ,偏移地址为 CHJ1 开始的顺序的 80 个单元中,存放着 某班 80 个同学某课程的考试成绩。编写程序统计90 分、8089 分、7079 分、60 69 分、60 分的人数各为多少,并将结果放在同一数据段、偏移地址为 CHJTJ 开始的 顺序单元中。 参考答案: STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATASEGMENT CHJ1DB 80 DUP(?) CHJTJDB 5 DUP(00H) DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV SI,OFFSET CHJ1 MOV DI,OFFSET CHJTJ XOR BX,BX XOR DX,DX MOV CX,80 NEXT:MOV AL,SI CMP AL,90 7 JB C80 INC BH;90 分的人数 JMP AAA C80:CMP AL,80 JB C70 INC BL;80 分的人数 JMP AAA C70:CMP AL,70 JB C60 INC DH;70 分的人数 JMP AAA C60:CMP AL,60 JB AAA INC DL;60 分的人数 JMP AAA AAA:INC SI LOOP NEXT MOV AL,80 SUB AL,BH SUB AL,BL SUB AL,DH SUB AL,DL;60 分的人数 MOV DI,BH MOV DI+1,BL MOV DI+2,DH MOV DI+3,DL MOV DI+4,AL MOV AH,4CH INT 21H CODEENDS END START 4.13编写一个程序,先提示输入数字“Input Number:09” ,然后在下一行显示输 入的数字并结束;如果未键入 09,则提示错误“Error! Your Input is not 09. Input Number:09” ,继续等待输入数字。 参考答案: DATASEGMENT;数据段 INMSGDB INPUT NUMBER:0 9 ,0DH,0AH, $ ERMSG DB ERROR! YOUR INPUT IS NOT 09. INPUT NUMBER:09,$ DATAENDS CODESEGMENT;代码段 8 START: PUSH DS SUB AX,AX PUSH AX MOV DX,OFFSET INMSG MOV AH,9 INT 21H ;显示输入数字 09 AGAIN: MOV AH,1 INT 21H ;接受一个字符 CMP AL, 0;判断是否输入的是数字 09 JB ERDISP CMP AL,9 JA ERDISP MOV DL,AL MOV AH,2 INT 21H ;显示输入的数字 JMP DONE;结束 ERDISP: MOV DX,OFFSET ERMSG MOV AH,9 INT 21H ;显示输入错误 JMP AGAIN ;继续输入 DONE:MOV AX ,4C00H INT 21H CODEENDS END START 4.14编写一个程序,把一个 16 位二进制数用 4 位十六进制形式在屏幕上显示出来。 参考答案: DATASEGMENT DAT16B DW 1234H DATAENDS CODESEGMENT MAINPROC FAR ASSUME CS:CODE; DS:DATA START: PUSH DS SUB AX,AX PUSH AX MOV CH,4 9 ROTATE: MOV BX,DAT16B MOV CL,4 ROL BX,CL MOV AL,BL AND AL,0FH ADD AL,30H AND AL,0FH ADD AL,30H CMP AL,3AH JL PRINTIT ADD AL,07H PRINTIT: MOV DL,AL MOV AH,2 INT 21H DEC CH JNZ ROTATE RET MAINENDP CODEENDS END START 4.15编写一个程序, 把键入的一个字符, 用二进制形式 (0/1) 显示其 ASCII 代码值。 参考答案: STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATASEGMENT STRI1DBPLEASE INPUT,0DH,0AH,$ DATAENDS CODESEGMENT START: PUSH DS SUB AX,AX PUSH AX MOVDX,OFFSET STRI1 MOV AH,09H INT 21H 10 MOV AH, 01H INT 21H MOV CX, 8 AGAIN: XOR DL,DL SHL AL, 1 ADC DL, 0;DL=DL+0+CF:如果 CF=0,那么 DL=30H ;如果 CF=1,那么 DL=0+30H+1=31H MOV AH,02H INT 21H LOOP AGAIN MOVAH,4CH INT 21H CODEENDS ENDSTART 4.16编写一个程序,从键盘输入一个字符串(不超过 255 个) ,将其中的小写字母 转换成大写字母,然后按原来的顺序在屏幕上显示。 参考答案: STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATASEGMENT UFFERDB 255 ;定义缓冲区,第 1 字节填入可能输入的最大字符数 DB 0;第 2 个字节将用于存放实际输入的字符数 DB 255 DUP(0);第 3 字节开始用于存放输入的字符串 DATAENDS CODESEGMENT START: PUSH DS SUB AX,AX PUSH AX MOV DX,SEG BUFFER MOV DS,DX ;设置数据段 DS MOV DX,OFFSET BUFFER;提供入口参数:DX 字符串的偏移地址 MOV AH,0AH INT 21H ;一个字符串的输入 MOV SI,OFFSET BUFFER MOV DI,OFFSET BUFFER INCSI 11 INCSI AGAIN: LODSB ;串读取 CMP AL,$ JZ EXIT0;如果相等,结束 CMP AL,60H ;比较 AL,60H A JB DISPLAY ;如果低于,DISPLAY SUB AL,20H ;大小写转换 DISPLAY: MOV AH,02H MOV DL,AL INT 21H ;一个字符的输出 LOOP AGAIN EXIT0: MOVAH,4CH INT 21H CODEENDS ENDSTART 4.17编写一个程序,从键盘接收一个数字(09) ,然后响铃,响铃的次数为输入 的数字。 参考答案: STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS DATASEGMENT STRI1DB Please input number:1-9,0DH,0AH,$ DATAENDS CODESEGMENT START: PUSH DS SUB AX,AX PUSH AX AGAIN: MOVDX,OFFSET STRI1;显示 STRI1,提示输入 MOV AH,09H INT 21H MOV AH,01H;调用输入一个字符 INT21H;输入一个字符存在 AL 中 CMP AL, 1;判该字符,如不在1-9 12 JBAGAIN;重新输入 CMP AL, 9 JAAGAIN AND AL,0FH;将 31H 和 39H 转换为 1 和 9在1-9 ,屏蔽高 4 位 MOV CL, AL;振铃次数送 CX XOR CH,CH BELL:MOV DL, 07H;调用一次振铃 MOV AH, 02H INT 21H LOOP BELL MOVAH,4CH INT 21H CODEENDS ENDSTART 4.18利用扬声器控制原理,编写一个简易乐器程序。当按下 18 数字键时,分别 发出连续的中音 17 和高音 i(对应频率依次为 524Hz、588H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 低压实操考试问答题目及答案
- 铁匠考试题及答案
- 天津网约车考试题库及答案
- 2025年高级钳工基本试题及答案
- 2025年高级财务会计综合练习题及答案
- 中国外汇交易管理办法
- 课程审核制度管理办法
- 化纤绿色制造技术-洞察及研究
- 上海疫情应急管理办法
- 儿童玩具偏好分析-洞察及研究
- 审核评估线上评估专家联络员培训
- 初一新生安全教育第一课
- 2025年高考真题-化学(湖南卷) 含答案
- 学堂在线 唐宋词鉴赏 期末考试答案
- 立德树人教育宣讲课件
- 酒店销售技巧及话术培训
- 高中生物选择性必修1参考答案
- 2025-2030中国水上自动驾驶系统行业运营态势与投资动态预测报告
- 幼儿教育中的传统文化融入
- 车辆维修团队管理制度
- 呼吸器官的进化
评论
0/150
提交评论