汇编语言程序设计(合工大版)习题参考答案.pdf
《汇编语言程序设计(合工大版)习题参考答案.pdf》由会员分享,可在线阅读,更多相关《汇编语言程序设计(合工大版)习题参考答案.pdf(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!4 部份习题参考答案 以下各数均为十进制数,请采纳 8 位二进制补码运算,并回答标志寄放器 FLAGS 中 CF 和 OF 的值,运算结果所代表的十进制数是多少?若是用 16 位二进制补码运算,其结果所代表的十进制数是多少?FLAGS 中 CF 和 OF 的值呢?(1)85+69 (2)85+(-69)(3)85-(-69)(4)85-(69)85=55H,69=45H,-69=BBH,8 位二进制补码运算:(1)85+69=55H+45H=9AH,CF=0,OF=1 (2)85+(-69)=55H+
2、BBH=110H,CF=1,OF=0 其余略 实模式下,写出段地址和偏移地址为 1234:200 二、1430:004 二、FF00:0FFF的物理地址。1234:2002=12340+2002=14342 1430:0042=14300+0042=14342 FF00:0FFF=FF000+0FFF=FFFFF 已知 8086 系统某存储单元物理地址为:52506H,你以为段基址的最大值、最小值别离是多少?8086 微机最多能够有多少个不同的段基址?52506=5250:0006,段基址的最大值=5250 52506=4251:FFF6,段基址的最小值=4251 从物理地址为 00100H
3、开始到 00103H 单元中顺序寄存的数据为:12H,34H,56H,78H。请画出数据寄存示用意,并回答以下问题:欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!(1)写出 00101H 字节单元的内容(00101)=34H(2)写出 00102H 字单元的内容(00102)=7856H 习题 3 别离说明 8086 处置器中各寄放器的名称和作用是什么?溢出标志 OF 与进位标志 CF 有何作用和区别?何为段地址?何为有效地址?何为物理地址?用指令举例说明。带符号数比较大小,当 AX BX 时程序转向标号 L1,假设前导指令为 CMP AX,BX
4、 后续指令应什么缘故?假设视为二个无符号数比较大小,后续指令应什么缘故?带符号数:JL L1,无符号数:JB L1 ADD 指令和 ADC 指令在什么情形下是一样的结果?CF=0 说出 CALL 指令和 INT 21H 指令的操作,有何异同?CALL 把断点压入堆栈,不必然是远调,INT 21H 还要把 FLAGS 压入堆栈,且是远调,总入口地址为 84H 内存中的两个字。除用 4CH 号系统功能挪用终止程序的执行并退出,还有哪些方法?RET 指令,INT 20H 指出以下错误的指令,说犯错误缘故,并给出适合的修改。(1)MOV AX,DX /MOV AX,BX (2)MOV DS,DATA
5、/MOV DS,BX 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!(3)MOV CS,AX /MOV ES,AX(4)MOV AX,DL /MOV AL,DL(5)PUSH AL /PUSH AX(6)ADD BX,DI /ADD BX,DI(7)LEA BX,2000H /LEA BX,2000H (8)MOV BX,OFFSET 2000H (9)MOV SI,2 /MOV BYTE PTR SI,2(10)MUL BX,CX /MUL BX(11)DIV 5 /DIV BX(12)MOV BYTESI,2 /MOV BYTE PTR SI
6、,2(13)MOV AX,SI+DI /MOV AX,BX+SI(14)SHR AX,4 /SHR AX,1(15)CMP 6,AX /CMP AX,6(16)MOV FFFF,AX /MOV FFFE,AX(17)MOV AX,BX+4 /MOV AX,BX+4(18)JMP FAR PRO /JMP FAR PTR PRO 假定(DS)=1200H,(SS)=4400H,(BX)=463DH,(BP)=2006H,(SI)=6A00H,位移量 D=4524H,以 AX 寄放器为目的操作数,试写出以下各类寻址方式下的传送指令,并确信源操作数的有效地址EA 和物理地址。(1)当即寻址 ;操作数
7、的 EA 确实是指令的 EA/操作数在指令中/无 EA (2)直接寻址 ;EA=4524H,物理地址=DS:4524 (3)利用 BX 的寄放器寻址;无 EA (4)利用 BX 的间接寻址 ;EA=463DH,物理地址=DS:463D (5)利用 BP 的寄放器相对寻址;MOV AX,BP+4524,EA=2006+4524,物理地址=SS:EA (6)基址变址寻址;MOV AX,BX+SI,EA=BX+SI,物理地址=DS:EA (7)相对基址变址寻址;MOV AX,4524+BX+SI,EA=4524+BX+SI,物理地址=DS:EA 用一条指令完成以下操作。(1)把 BX 寄放器和 DX
8、 寄放器的内容相加,结果存人 DX 寄放器中。ADD DX,BX(2)用寄放器BX和SI的基址变址寻址方式把存储器中的一个字节与AL寄放器的内容相加,并把结果送到 AL 寄放器中。ADD AL,BX+SI(3)用寄放器 BX 和位移量 0B2H 的寄放器相对寻址方式把存储器中的一个字和 AX 寄放器的内容互换。XCHG AX,BX+0B2(4)用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回该存储单元中。ADD WORD PTR 524,2A59H 在数据段概念了 ARRAY 数组,其中依次存储了五个字数据,请用以下寻址方式的指令把第 4 个字送 AX 寄放
9、器。(1)直接寻址 MOV AX,ARRAY+6 或 MOV AX,ARRAY+6 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!(2)利用 BX 的间接寻址 LEA BX,ARRAY+6;MOV AX,BX (3)利用 BX 的寄放器相对寻址 LEA BX,ARRAY ;MOV AX,BX+6(4)基址变址寻址 LEA BX,ARRAY;MOV SI,6;MOV AX,BX+SI 画出数据在数据段中的寄存情形,程序执行后,BX、DI、CX、DX 寄放器中的内容是什么?程序如下:data segment array dw 20,30,40,20h
10、,30h,-6 buff db abcd$data ends code segment assume cs:code,ds:data start:mov ax,data mov ds,ax mov bx,array+1 mov di,offset array mov cx,di+5 mov dl,buff+3 mov ah,4ch int 21h code ends end start 1E,00,00,00,20,00,00,64 在 DEBUG 下设置(SP)=20H,设置 AX、BX、CX、DX 为不同值,把这四个寄放器内容依次压入堆栈,再从堆栈中依次弹出到 SI、DI、BP、BX 寄放
11、器。写出一段程序实现上述操作,并画出每条入栈指令执行后 SP 和堆栈中数据的转变。求出 7450H 与以下各十六进制数的和及差,并依照结果标出 SF、ZF、CF、OF 标志位的值。(1)1234H (2)5678H (3)9804H (4)E0A0H SF、ZF、CF、OF(1)1234H+7450H,1 0 0 1(2)5678H+7450H,1 0 0 1(3)9804H+7450H,0 0 1 0(4)E0A0H+7450H,0 0 1 0 在数据段有如下概念:DATAX DW?,?DATAY DW?,?SUM DW?,?,?,?请用 16 位指令按以下要求写出指令序列:欢迎您阅读并下载
12、本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!(1)DATAX 和 DATAY 两个字数据相加,和寄存在 SUM 中。MOV AX,DATAX ADD AX,DATAY MOV SUM AX (2)DATAX 和 DATAY 两个双字数据相加,和寄存在 SUM 开始的字单元中。MOV AX,DATAX MOV DX,DATAX+2 ADD AX,DATAY ADC DX,DATAY+2 MOV SUM,AX MOV SUM+2,DX(3)DATAX 和 DATAY 两个字数据相乘(用 MUL),积寄存在 SUM 开始的字单元中。(4)DATAX 和 DATAY
13、两个双字数据相乘(用 MUL),积寄存在 SUM 开始的字单元中。(5)DATAX 双字除以字 DATAY(用 DIV),商和余数寄存在 SUM 开始的字单元中。(6)DATAX 和 DATAY 两个紧缩 BCD 码数据相加,和寄存在 SUM 中。双字长数 X 寄存在 DX 和 AX 中,设(DX)=1004H,(AX)=1002H,要求用 16位指令写出:(1)对寄存在 DX 和 AX 中的双字长数求补的指令序列,并验证结果。NOT AX NOT DX ADD AX,1 ADC DX,0 (2)用减法指令求 0-X 的指令序列,并验证结果。MOV BX,0 MOV CX,0 SUB BX,A
14、X SBB CX,DX ;结果在 CX,BX 试编写一个程序求出双字长数的绝对值。双字长数在 A 开始的字单元中,结果寄存在 B 开始的字单元中。A DW?,?B DW?,?。MOV AX,A MOV DX,A+2 TEST DX,8000H JZ ZS NOT AX NOT DX ADD AX,1 ADC DX,0 ZS:MOV B,AX 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!MOV B+2,DX 用移位指令为主实现对 AX 中的无符号数乘以 5,不考虑乘积可能超出 16位。MOV DX,AX MOV CL,2 SHL AX,CL AD
15、D AX,DX 用移位指令为主实现对 AX 中的无符号数乘以 5,考虑乘积可能超出 16 位的情形。提示:用 DX 接 AX 左移的位,32 位操作。把 AX 中的内容依次倒排序,即第 0 位移到第 15 位,第 1 位移到第 14 位,。在数据段有如下概念:BUFF DB ABCD$EFGHIJK$STR1 DB 12 DUP(?)LEN DB?用串指令编写程序完成以下操作:(1)对字符串 STR1 全数置空格符。MOV AX,DATA MOV DS,AX MOV AL,20H LEA DI,STR1 MOV CX,STR1-BUFF CLD REP STOSB (2)从左到右把 BUFF
16、中的字符串传送到 STR1。MOV AX,DATA MOV DS,AX MOV ES,AX CLD LEA SI,BUFF LEA DI,STR1 MOV CX,STR1-BUFF REP MOVSB(3)从右到左把 BUFF 中的字符串传送到 STR1。MOV AX,DATA MOV DS,AX MOV ES,AX STD LEA SI,STR1-1 LEA DI,LEN-1 MOV CX,STR1-BUFF REP MOVSB 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!(4)比较 BUFF 与 STR1 两个字符串是不是相等,如相等那么
17、DX=1,不然 DX=0。MOV AX,DATA MOV DS,AX MOV ES,AX CLD LEA SI,BUFF LEA DI,STR1 MOV CX,STR1-BUFF REPE CMPSB (5)查找 BUFF 中有无字符$,把字符$显现的次数计入 BX 寄放器。MOV AX,DATA MOV ES,AX MOV BX,0 CLD MOV AL,$LEA SI,BUFF MOV CX,STR1-BUFF NEXT:REPNE SCASB JCXZ NO-FOUND INC BX JMP NEXT 关于给定的 AX 和 BX 的值,执行以下程序段,程序将转向哪里?ADD AX,BX
18、JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4 JMP L5(1)AX=1234H,BX=6789H(2)AX=9200H,BX=4000H(3)AX=420EH,BX=8031H(4)AX=E002H,BX=8086H L1,L1,L1,L5 下面不完整的程序段是比较 AX 和 BX 的值,把其中大的数送 MAX 变量。若是是无符号数,应如何填写指令?若是是有符号数,应如何填写指令?CMP AX,BX(JB L1 )有符号数:JL L1 MOV MAX,AX(JMP L2 )L1:MOV MAX,BX L2:HLT 欢迎您阅读并下载本文档,本文档来源于互联网,如有
19、侵权请联系删除!我们将竭诚为您提供优质的文档!在以下程序段的括号中别离填入如下指令,程序执行完后,AX、CX 的内容是什么?(1)LOOP(2)LOOPE(3)LOOPNZ MOV AX,8 MOV CX,5 L1:SHL AX,CL()提示:上机,SHL 指令使 ZF=0,LOOPE 指令不可能循环。测试 AL 寄放器,若是最高位和最低位同时为 0,那么转 L0,若是最高位和最低位只有一名为 1,那么转 L1,若是最高位和最低位同时为 1,那么转 L2。画出流程图,并编写程序段。ROL AL,1 AND AL,3 JZ L0 SUB AL,3 JZ L3 JMP L2 从键盘输入一个英文字母
20、,显示输出其大写。画出流程图,并编写程序段。从键盘输入一名数字N,显示输出 N 个 N。画出流程图,并编写程序段。CODE SEGMENT ASSUME CS:CODE START:MOV AH,1 INT 21H MOV DL,AL AND AL,0FH MOV CL,AL MOV CH,0 NEXT:MOV AH,2 INT 21H LOOP NEXT MOV 4CH INT 21H CODE ENDS END START 寄放器中为紧缩的BCD 码表示的十进制数,写出指令完成十进制加减计算,即计算 AL+BL;AL-BL。并在 DEBUG 下上机验证。(1)AL=65H,BL=37H (
21、2)AL=98H,BL=69H 寄放器中为非紧缩的 BCD 码表示的十进制数,写出指令完成十进制加减计算,即计算 AL+BL;AL-BL。并在 DEBUG 下上机验证。(1)AX=235H,BL=37H (2)AL=238H,BL=39H 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!用相对基址比例变址寻址方式求 ARRAY 行列式的值。ARRAY DW 2,3,5 DW 1,4,6 DW 2,7,9 习题 4 假设 VAR1 为字节变量,VAR2 为字变量,LAB 为标号,VAL 为常量,指出以下有错误的指令,说出缘故,并予纠正。(1)ADD
22、AX,VAR1 /ADD AL,VAR1(2)MOV VAR2,VAR1 /MOV VAR2,AX(3)MOV VAR1,BYTE PTR VAR2 /MOV VAR1,AL(4)MOV VAR1,OFFSET VAR2 /MOV VAR2,OFFSET VAR1(5)MOV VAR2,OFFSET VAR1 (6)MOV VAR1,VAR2+VAR1 /MOV VAR2,VAR2-VAR1(7)MOV VAR1,VAR2-VAR1 /MOV VAR2,VAR2-VAR1(8)MOV VAR2,VAR2-VAR1(9)MOV BX,VAR2+VAL-4*5 (10)MOV BX,TYPE VA
23、L (11)MOV BX,LAB(12)JMP VAR1 /JMP WORD PTR VAR1(13)JMP VAR2(14)JMP VAL /仅在 DEBUG 下能够(15)MOV BL,VAR1 AND VAL /VAR1 AND VAL 须用指令实现(16)MOV BX,VAL AND 0FH(17)MOV BX,VAL LT 0FH(18)MOV BL,LAB+VAR1 /MOV BL,VAR1 画图说明以下数据概念语句所示内存空间的数据,并回答寄放器的值。ORG 0 ARRAY LABEL BYTE DA1 DW 2,9,14,3,315H,-6 DA2 DB 7,ABCDEDFG
24、LEN=$DA2 ORG 100H DA3 DW DA4 DA4 DB 4 DUP(2 DUP(1,2,3),4)MOV AL,ARRAY+2 (AL)=()H ADD AL,DA2+1 (AL)=()H MOV AX,DA2-DA1 (AX)=()H MOV BL,LEN (BL)=()H MOV AX,DA3 (AX)=()H MOV BX,TYPE DA4 (BX)=()H MOV BX,OFFSET DA4 (BX)=()H MOV CX,SIZE DA4 (CX)=()H MOV DX,LENGTH DA4 (DX)=()H MOV BX,WORD PTR DA4 (BX)=()H
25、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!MOV BL,LEN AND 0FH (BL)=()H MOV BL,LEN GT 5 (BL)=()H MOV AX,LEN MOD 5 (AX)=()H 变量和标号有哪些区别?变量和标号有哪些属性?如何获取属性值?写出指令。变量是为指令提供的操作数,标号是为指令提供标识,都是为了在指令中引用。它们最要紧的属性有:偏移属性,段属性,类型属性。例如:MOV BX,OFFSET VAL;取偏移属性 MOV BX,SEG VAL ;取段属性 MOV BX,TYPE VAL ;取类型属性 指令和伪指令的区别
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 合工大版 习题 参考答案
限制150内