大连理工大学 计算机原理 习题3答案

上传人:飞****9 文档编号:127391291 上传时间:2020-04-01 格式:DOC 页数:11 大小:83.51KB
返回 下载 相关 举报
大连理工大学 计算机原理 习题3答案_第1页
第1页 / 共11页
大连理工大学 计算机原理 习题3答案_第2页
第2页 / 共11页
大连理工大学 计算机原理 习题3答案_第3页
第3页 / 共11页
大连理工大学 计算机原理 习题3答案_第4页
第4页 / 共11页
大连理工大学 计算机原理 习题3答案_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《大连理工大学 计算机原理 习题3答案》由会员分享,可在线阅读,更多相关《大连理工大学 计算机原理 习题3答案(11页珍藏版)》请在金锄头文库上搜索。

1、习题3:1、8086系统中,请说明下列指令的源操作数的寻址方式是什么?1)MOV AX, 1234H 立即寻址2)MOV AX, 1234H 直接寻址3)MOV AX, BX 间接寻址4)MOV AX, 1234HBX + SI 相对基址变址寻址5)MOVSB 数据串寻址6)IN AL, DX 间接端口寻址2、请在下表中画出下列数据段以十六进制表示的各单元值(表格中每个单元表示一个字节),并写出变量var1, var2, var3的偏移地址和cnt的值。0030H低地址高地址data SEGMENT para ORG 30Hvar1 DB -2, A, 2 dup(23)var2 DW -1c

2、nt EQU $-var1var3 DW var2data ENDS答:var1:0030,var2:0036,var3:0038,cnt=8.3、以下程序实现将变量var进行var*10+600的操作,并将计算结果保存在变量result中,当程序执行 到地址M5的时候,请在以下表格中画出当前堆栈指针的位置和堆栈里的内容(程序断点可以用标号,在堆栈中可用寄存器名代表保存的内容,SS的内容不用指定,表格的每个单元表示一个字)。(6分)高地址低地址data segment var dw 1000result dd ?data endsss_seg segment stackdb 100 dup(?

3、)ss_seg endscode segment assume cs:code, ds:data, ss:ss_segmain proc farpush dsmov ax, 0push axmov ax, datamov ds, axmov ax, varM1:call CaculateM2:dw 10M3:dw 600M4:lea bx, resultmov bx, axmov bx+2, dxretmain endpCaculate proc pushbpmovbp, sppushsipushbxmovbx, bp+2movsi, cs:bxmulsiM5:addax, cs:2bxadd

4、bx, 4movbp+2, bxpopbxpopsipopbpretCaculate endpcode endsend main高地址低地址DS00HM2BPSIBX答:如下图,此时栈顶指针指向比bx所在单元地址小1的堆栈单元。4、问答题1)若AL = 81H,则执行指令CBW后AH的内容为多少?答:AH的内容为FFH.2)若BL = BEH,执行下列指令序列,则每执行一步,BL和CF的值为多少?SHL BL, 1 ;BL = _7CH_, CF = _1_MOV CL, 2SHR BL, CL ; BL = _1FH_, CF = _0_OR BL, 80SAR BL, 1 ; BL = _

5、CFH_, CF = _1_ROR BL,CL ; BL = _F3H_, CF = _1_INC CLRCL BL, CL BL = _9FH_, CF = _1_3)什么是短跳转、近跳转、远跳转?答,短跳转,是段内直接跳转,把IP的内容加上一个字节的补码数作为新的IP,跳转范围为-128127.近跳转,是段内直接跳转,把IP的内容加上一个字的补码数作为新的IP,跳转范围为-3276832767.远跳转,是段间直接跳转。4)若当前SP = 1000H,CS = B000H ,IP = 0100H,且当前FLAG = 2345H,则执行指令INT 21H以后,SP的值变为多少?堆栈段中6个存储

6、单元0FFFH、0FFEH、0FFDH、0FFCH、0FFBH、0FFAH的值分别是多少?答:SP=0FFAH,(0FFFH)=23H,(0FFEH)=45H,(0FFDH)=B0H,(0FFCH)=00H,(0FFB)=01H,(0FFA)=00H.5、请写出程序段实现下列功能例如:从160H端口读取1个字节 MOV DX, 160H IN AL, DX1) 将一个8位数20H写入到地址为20H的端口;答:MOV AL, 20H OUT 20H, AL2) 若AL = 56H, BL = 57H,将这两个压缩格式BCD码相加并将结果保存到存储单元2000H中;答:ADD AL, BL DAA

7、 MOV 2000H, AL 3) 将2个32位无符号数DAT1和DAT2相乘,结果保存在64位无符号数中,请编写程序段。 mov ax, data mov ds, ax lea si, result sub ax, ax mov si+4,ax mov si+6,ax mov ax,word ptr data1 mul word ptr data2 mov si,ax mov si+2,dx mov ax,word ptr data1+2 mul word ptr data2 add si+2,ax adc si+4,dx adc word ptr si+6,0 mov ax,word pt

8、r data2+2 mul word ptr data1 add si+2,ax adc si+4,dx adc word ptr si+6,0 mov ax,word ptr data2+2 mul word ptr data1+2 adc si+4,ax adc si+6,dx mov ax, 4c00h int 21h4) 求数据段偏移地址为1000H开始的一个字符串的长度,字符串以ASCII码0为结束符,长度要求包括结束符;(提示:初始化AL = 0 CX = 0FFFFH,然后使用REPNZ SCASB命令,最后根据CX的值计算字符串长度)答:mov ax, dsmov es, ax

9、mov di, 1000hmov al, 0mov cx, 0FFFFHcldrepne scasbmov ax, 0FFFFHsub ax, cxmov cx, ax6. 什么是寻址方式?8086/8088共有哪几种寻址方式?答:获得数据或者数据地址信息的方式称为寻址方式。1隐含寻址2立即寻址3寄存器寻址4直接寻址5间接寻址6基址寻址7变址寻址8基址变址寻址9相对基址变址寻址10数据串寻址11直接端口寻址12间接端口寻址13段内直接寻址14段内间接寻址15段间直接寻址16段间间接寻址7设DS=6000H, ES=2000H, SS=1500H, SI=00A0H, BX=0800H, BP=

10、1200H, 变量VAR地址为0050H. 请分别指出下列指令源操作数的寻址方式?并计算除立即寻址外的其他寻址方式下源操作数的地址。(1)MOV AX, BX (2) MOV DL, 80H (3)MOV AX, VAR(4) MOV AX, VARBXSI (5) MOV AL, B (6) MOV DI,ES:BX(7) MOV DX,BP (8) MOV BX,20HBX答:(1)寄存器寻址,无地址(2)立即寻址(3)直接寻址,物理地址为60050H(4)相对基址变址寻址,物理地址为608F0H(5)立即寻址(6)间接寻址,物理地址为20800H(7)间接寻址,物理地址为16200H(8

11、)基址寻址,物理地址为60820H8. 试说明指令MOV BX,5BX与指令LEA BX,5BX的区别。答:第一个指令是将DS段内,便偏移地址为(BX+5,BX+6)的内容传送给BX,第二个指令取地址,是把BX+5送给BX。9设堆栈指针SP的初值为2300H, AX=50ABH, BX=1234H. 执行指令PUSH AX后,SP=?,再执行指令PUSH BX及POP AX之后,SP=?AX=?BX=?答:SP=SP-2=22FEH,执行后面指令后SP=22FEH,AX=BX=1234H10. 指出下列指令的错误:(1) MOV AH,CX (2) MOV 33H,AL (3) MOV AX,

12、SIDI (4) MOV BX,SI (5) OUT 230H,AX (6) MUL 39H答:(1)两操作数字长不相等(2)立即数不能作为目的操作数(3)两个变址寄存器不能同时使用(4)不能对两个存储器操作(5)端口地址超过8位,必须用间接寻址(6)立即数不能作为mul指令的操作数。11. 已知AL=7BH,BL=38H,试问执行指令ADD AL,BL后,AF、CF、OF、PF、SF和值各为多少?答:AF=1,CF=0,OF=1,PF=0,SF=1,ZF=012试判断下列程序执行后,BX中的内容MOV CL,3MOVBX,0B7HROL BX,1ROR BX,CL答:BX=C02DH13. 按下列要求写出相应的指令或程序段:(1) 写出两条使AX内容为0的指令;(2) 使BL寄存器中的高4位和低4位互换;(3) 屏蔽CX寄存器的b11、b7和b3位;(4) 测试DX中的b0和b8位是否为1。答:(1)sub ax,ax xor ax, ax (2)mov cl, 4 rol bl, cl (3)and cx, 0F777H (4)test dx, 0101H14分别指出以下两个程序段的功能:(1) MOV CX, 10 LEA SI, FI

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号