1、汇编语言复习汇编语言考试复习范围:课本的习题:p112(习题三)7-14P140(习题四)6-11相关的习题:1. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。 12F8:0100 1A2F:0103 1A3F:0003 1A3F:A1FF2. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示):03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据的值。3. 分别指出下列指令中源操作数和目标操作数的寻址方式。 MOV BX,12 MOV AL,128 MOV BX,DX MOV DS,AX MOV VAR,8
2、 MOV 1000H,DX MOV 6BX,CX MOV AX,BXSI MOV TABBPDI,AL4. 在80X86系统中,设(DS)1000H,(ES)2000H,(SS)1200H,(BX)0300H,(SI)0200H,(BP)0100H,VAR的偏移量为0060H,若目标操作数为存储器操作数,请计算目标操作数的物理地址是多少? MOV BX,12 MOV AL,128 MOV BX,DX MOV ES:SI,AX MOV VAR,8 MOV 1000H,DX MOV 6BX,CX MOV BXSI,AX MOV 6BPSI,AL5. 写出以下指令的执行结果: MOV AX,3000
3、H 与 MOV AX,3000H MOV AX,MEM 与 MOV AX,OFFSET MEM MOV AX,MEM 与 LEA AX,MEM6. 指出下列指令的错误: MOV AX,BX MOV AL,1280 MOV BX,9 MOV DS,1000H MOV VAR,BX MOV M1,M2 MOV 6,CX MOV AX,SIDI MOV CS,AX MOV BX,OFFSET VARSI 8. 自BUFFER单元开始连续存放着两个字型数据,编程序求它们的和,并把结果存放在这两个数据之后。9. 写出把首址为BUF的字型数组的第4个字送到AX寄存器的指令,要求使用以下几种寻址方式: 直接
4、寻址方式 使用BX的寄存器间接寻址方式 使用BX的寄存器相对寻址方式10. 设(DS)1000H,(BX)0300H,(SI)0002H,(DI)0100H,自1000:0300单元开始存有以下数据(用十六进制形式表示):12 34 56 78 90 AB CD EF,试说明下列各条指令执行后目标操作数的内容。 ADD BX,12 MOV DX,0300H SUB BYTE PTR BX,8 MOV AX,BXSI MOV CX,5BX MOV DX,4BXSI为非压缩BCD码,完成第15题所要求的操作。11. 编程序使: 使AL的各位变反。 BX寄存器低四位置1。 AX寄存器的低四位清0。
5、使CX寄存器的低四位变反。 用TEST指令测试AL寄存器的位0和位6是否同时为0,若是则把0送DH寄存器,否则把1送DH寄存器。12 下列语句各为变量分配了多少字节? N1 DB 5 N2 DB 123 N3 DB 123 N4 DB 80,?,80 DUP (0) N5 DW 1,2,3 N6 DD 6,100 N7 DD N3 N8 DW N4 N9 DW N4+213 对于第12题,若N1的地址为1470:0000,其后的变量依次连续存放,试给出各变量的偏移量。N7N9变量的值是多少?14 如果定义了如第12题所示的变量,下列指令执行的结果是什么(若语句正确,则给出执行结果;若不正确,说
6、明错误原因)? ADD N1,10 MOV AL,N2 SUB N3,N2 MOV AL,N3+2 LEA DX,N4+2 XOR N5,0FH MOV N4+1,CX AND N1,01234H NUM1 EQU 89ADD NUM1,10 NUM2 EQU 100NUM2 EQU 120 15 假设有下列数据定义语句: M1 DB 10 M2 DW 2345H M3 DD 987865H试写出汇编程序对这些语句汇编后所生成的值(例如M2单元、M21单元的内容)。 16 有以下程序片段,试问汇编后符号L1和L2的值各为多少?BUF1 DB 1,2,3BUF2 DW 5,6,7L1 EQU B
7、UF2L2 EQU BUF2BUF117. 若AX=0ABCDH,BX=7F8FH,CF=1。 求分别执行8086 CPU指令 ADD AX,BX ADC AX,BX SBB AX,BX NEG AX AND AX,BX OR AX,BX XOR AX, BX IMUL BL后,AX寄存器中的内容,18. 指出下列指令中哪些是错误的,并指出错在何处? MOV DL,DX MOV ES,2000H SUB BX,SI ADD AX,BX+CX XCHG DS,2400H DEC 15H IN AL,DX OUT 300H,AX 解答 错,DX不能作为间接寻址的寄存器。 错,立即数不能直接送给段寄
8、存器。 错,两个存储单元间内容不能直接相减。 错,CX寄存器不能作为变址寄存器。 错,不允许段寄存器与存储单元内容进行交换 错,减1指令不能对段寄存器直接操作 对 错,输出指令的地址若是16位,必须用DX间址。19. 下列程序段执行后 AX=?设数据段有: TABLE DW 100,200,300,400 ENTRY DW 3代码段 对DS初始化 MOV BX,OFFSET TABLE MOV SI,ENTRY MOV AX,BX+SI20. 若SS=1000H,SP=2000H,AX=1234H,BX=5678H,FR=2115,试说明执行指令 PUSH AX PUSH BX PUSHF P
9、OP CX POP DX之后,SP=? SS=? CX=? DX=? 并画图指出堆栈中各单元的内容。解答: SS=1000H SP=1FFEH CX=2115H DX=5678H 栈中各单元内容如下所示: 地址RAM11FFAH211511FFCH567811FFEH123412000H21、读下列程序段:写出; (1)每条指令连续执行后,哪些寄存器发生变化?内容是什么? (2)程序段执行完后,BX寄存器的肉容是什么? MOV BX,3F93H MOV CL ,4ADD BX ,CLMOV AL ,BLAND AL ,0FH0R AL ,30H程序编写及程序填空:1)修改例2-1程序,输出传送
10、到目的缓冲区dbuffer中的字符串。 修改提示: DS应指向附加段 dbuffer中的字符串应加字符串结束符$ 执行DOS功能调用的9号子功能输出dbuffer中的字符串 (2)写程序,输出演示系统的欢迎词,输出格式的最低要求如下: * * * * 英文(中文)欢迎词 * * * * 提示:通过编写与调试该程序,掌握两段结构的程序设计、输出数据的格式编排(由ASCII码0AH和0DH控制换行和回车操作)、DOS功能调用,熟悉宏汇编程序调试的上机过程。(3)编程计算3550H-2320H,按16进制输出计算所得的差1230H。再输出3550H-2321H的差,检验程序的正确性。提示:考虑依次将
11、1230H(即0001 0010 0011 0000B)从高位到低位,每4位二进制数一组分离出来,再将4位二进制数转换为ASCII码,利用DOS系统功能调用的2号子功能输出,就得到16进制数据的输出效果。本题要求综合应用移位操作、逻辑操作等指令,并利用条件转移指令实现简单的循环程序, 6.4 实习题(1)编程完成在一个源字符串中搜索子字符串的功能(要求使用串比较指令cmpsb进行各次搜索),并输出搜索结果。提示:例如,源串为:How are you?子串为:are搜索方法如下: 源串中含有子串are时,搜索过程如图3.1所示。Howareyou?源串are第一次搜索are第二次搜索are搜索到
12、子串,搜索结束图3.1 源串中含有子串时的搜索过程 源串中不含子串arr时,搜索过程如图3.2所示。Howareyou?源串arr第一次搜索arr第二次搜索arr最后一次搜索,搜索结束图3.2 源串中不含子串时的搜索过程每一次搜索用repz cmpsb 指令完成。第一次搜索时,寄存器SI指向源串,寄存器DI指向子串,每搜索一次,SI指向源串的下一个字符,DI总是指向子串起点,然后进行两串比较,串比较的长度为子串长度。在整个搜索操作中,最多搜索的次数为:源串长度-子串长度+1。程序基本流程如图3.3所示。(2)编程实现从键盘输入学生分数等级:、,统计每种分数等级的人数并求平均成绩(要求用跳转表实现程序分支),输出统计结果,要求输出信息意义清楚。提示:实现所要求功能的程序流程如图3.4所示,当键入ESC键时结束成绩输入,ESC键的ASCII码为27(十六进制1BH)。 图3.4 统计成绩程序流程图(3)编程实现一维数组的排序操作。要求:主程序准备待排序的数据,调用子程序进行排序。子程序接收3个参数:数组名、数组长度、排序标志(=1:从大到小排序;=2:从小到大排序)。子程序根据主程序由寄存器传递的排序标志,对指定数组从大到小或从小到大排序。提示:程序流程如图3.5所示。图3.5 排序程序流程图(4)编写一个程序,完成自然数1到100的求和运算。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1