微机原理与接口技术习题答案3.docx

上传人:罗晋 文档编号:11034794 上传时间:2021-06-19 格式:DOCX 页数:22 大小:69.11KB
返回 下载 相关 举报
微机原理与接口技术习题答案3.docx_第1页
第1页 / 共22页
微机原理与接口技术习题答案3.docx_第2页
第2页 / 共22页
微机原理与接口技术习题答案3.docx_第3页
第3页 / 共22页
微机原理与接口技术习题答案3.docx_第4页
第4页 / 共22页
微机原理与接口技术习题答案3.docx_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《微机原理与接口技术习题答案3.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术习题答案3.docx(22页珍藏版)》请在三一文库上搜索。

1、.第 3 章 8086CPU 指令系统1. 写出完成下列要求的变量定义语句:( 1)在变量 var1 中保存 6 个字变量: 4512H,4512, 1, 100/3 , 10H, 65530;( 2)在变量 var2 中保存字符串: BYTE , word , WORD;( 3)在缓冲区 buf1 中留出 100 个字节的存储空间;( 4)在缓冲区 buf2 中,保存 5 个字节的 55H,再保存 10 个字节的 240,并将这一过程重复 7 次;( 5)在变量 var3 中保存缓冲区 buf1 的长度;( 6)在变量 pointer 中保存变量 var1 和缓冲区 buf1 的偏移地址。解

2、: var1DW4512H,4512,-1,100/3,10H,65530var2DBBYTE ,word ,WORD buf1DB100 DUP ( ?)buf2DB7 DUP ( 5 DUP ( 55H ),10 DUP ( 240)var3DBLENGTH buf1pointerDWvar1,buf1(或者 pointer DW OFFSETvar1, OFFSETbuf1)2. 设变量 var1 的逻辑地址为 0100: 0000,画出下列语句定义的变量的存储分配图:var1 DB 12, 12,20/6 , 4 DUP( 0,55H)var2 DBAssemblevar3 DWAB

3、,cd ,Evar4 DW var2var5 DD var2解:.3. 指令正误判断, 对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因 (设VAR1, VAR2 为字变量 , L1为标号):( 1) MOV SI, 100( 2) MOV BX, VAR1SI( 3) MOV AX, BX( 4) MOV AL, DX( 5) MOV BP, AL( 6) MOV VAR1, VAR2( 7) MOV CS, AX( 8) MOV DS, 0100H( 9) MOV BXSI, 1( 10)MOV AX, VAR1+VAR2( 11) ADD AX, LENGTH VAR1( 12

4、)OR BL, TYPE VAR2( 13) SUB DI, 78H( 14)MOVS VAR1, VAR2( 15) PUSH 100H( 16)POP CS( 17) XCHG AX, ES( 18)MOV DS, CS( 19) JMP L1+5( 20)DIV AX, 10( 21) SHL BL, 2( 22)MOV AL, 15+23( 23) MUL CX( 24)XCHG CL, SI( 25) ADC CS:0100, AH( 26)SBB VAR1 5,154解:( 1) MOV SI,100正确。源:立即数寻址,目的:寄存器寻址( 2) MOV BX,V AR1SI正确。

5、源:寄存器相对寻址,目的:寄存器寻址( 3) MOV AX,BX正确。源:寄存器间接寻址,目的:寄存器寻址( 4) MOV AL,DX错误。寄存器间接寻址时,DX, AX, CX 不能作地址寄存器( 5) MOV BP,AL错误。操作数类型不一致( 6) MOV V AR1,V AR2错误。两存储单元之间不能用MOV 指令传送数据.( 7) MOV CS,AX错误。 CS 不能为目的操作数( 8) MOV DS,0100H错误。目的操作数为段寄存器时,源操作数不能为立即数( 9) MOV BXSI, 1错误。指令类型不定。( 10)MOV AX,V AR1+V AR2错误。 MOV 指令中不能

6、完成加法运算( 11) ADD AX,LENGTH V AR1 正确。源:立即数寻址。目的:寄存器寻址( 12)ORBL,TYPE V AR2正确。源:立即数寻址。目的:寄存器寻址( 13)SUB DI,78H错误。指令类型不定( 14)MOVS V AR1,V AR2 正确。目的、源均为隐含寻址。操作数仅指出操作数类型( 15)PUSH 100H错误。将常数压入堆栈,要通过寄存器来实现( 16)POPCS错误。目的操作数不能为CS( 17)XCHGAX , ES错误。 XCHG 指令的操作数不能是段寄存器( 18)MOVDS, CS错误。 MOV 指令不能从段寄存器到段寄存器( 19)JMP

7、L1+5正确。段内直接转移( 20)DIVAX , 10错误。指令格式错误。( 21)SHLBL , 2错误。移位指令的移位数为1 或者 CL( 22)MOVAL , 15+23正确。源 :立即数寻址,目的 :寄存器。编译时就处理为 38( 23)MULCX正确。源:寄存器寻址,目的:寄存器寻址( 24)XCHG CL ,SI 正确。源:寄存器间接寻址,目的:寄存器寻址( 25)ADCCS:0100,AH正确。源 :寄存器寻址 ,目的 : 直接寻址(数据在代码段中)( 26)SBBVAR1-5,154正确。源:立即数寻址,目的:直接寻址。4. 说明下列指令对的区别:( 1) MOV AX, V

8、AR1与 MOV AX, OFFSET VAR1( 2) MOV AX, VAR2与 LEA AX , VAR2( 3) MOV AL, LENGTH VAR1 与 MOV AL, SIZE VAR1( 4) MOV AL, ES: DICMP AL, SI与 CMPSB( 5) SHR AL, 1与 SAR AL, 1( 6) SHR AL, 1与 ROR AL, 1( 7) ROL BX, 1与 RCL BX, 1解:( 1) MOVAX , VAR1把变量 VAR1 对应地址单元中的一个字送入AXMOVAX , OFFSET VAR1把 VAR1 的有效地址的偏移地址送入AX.( 2)

9、MOVAX , VAR2把变量 VAR2 对应地址单元中的一个字送入AXLEAAX , VAR2把 VAR2 的有效地址的偏移地址送入AX( 3) MOV AL , LENGTH V AR1把变量 VAR1 的长度送入ALMOV AL , SIZE V AR1把变量 VAR1 的大小送入AL( 4) MOVAL , ES: DICMPAL , SI把以 ES 为段地址, DI 为偏移地址的一个字节送入AL ,并与以 SI 内容为偏移地址的一个字节作比较,改变标志寄存器内容。(相当于作ES:( DI )与( DS: ( SI)内容比较)CMPSB对字符串中的一字节比较。寻址方式隐含。源串的地址由

10、DS:SI 指定,目的串的地址由ES:DI 指定。(相当于作DS: ( SI)与 ES:( DI )内容比较)( 5) SHR AL , 1AL 逻辑右移 1 位,最高位移入0, 最低位移入CF。SAR AL , 1AL 算术右移 1 位,以最高位内容移入,最低位移入CF, 其余各位右移一位。( 6) SHR AL , 1AL 逻辑右移 1 位,最高位移入0, 最低位移入CF。ROR AL , 1AL 的各位构成环形移位,右移一位,最低位内容同时移入到CF 和最高位。( 7) ROL BX , 1BX 各位构成环形移位,左移一位,最高位内容同时移入到CF 和最低位。RCL BX ,1BX 和

11、CF 构成环形移位,左移一位,CF 内容移入到最低位,最高位移入CF。5.写出下列转移指令的寻址方式(设 L1 为标号, VAR1为字型变量, DVAR1为双字型变量) :( 1) JMP L1(2) JMP NEAR L1( 3) JNZ L1(4) JMP BX( 5) JG L1(6) JMP VAR1SI( 7) JMP FAR PTR L1(8) JMP DVAR1解:( 1) JMP L1段内直接寻址(2) JMP NEAR PTR L1段内直接寻址( 3) JNZL1 段内直接寻址( 4) JMP BX段内间接寻址( 5) JG L1段内直接寻址( 6) JMP VAR1SI段内

12、间接寻址( 7) JMP FAR PTR L1 段间直接寻址( 8) JMP DVAR1段间间接寻址.6. ( DS) 2000H,(BX)0100H,( SI ) 0002H,( 20100) 3412H,( 20102)7856H,( 21200) 4C2AH,( 21202) 65B7H,求下列指令 行后AX 寄存器的内容:( 1) MOV AX, 1200H;( 2) MOV AX, BX;(3) MOV AX, 1200H;( 4) MOV AX, BX;( 5) MOV AX,1100BX; ( 6) MOV AX, BXSI;( 7) MOV AX,1100BXSI解:( 1)

13、1200H( 2) 0100H( 3) 4C2AH( 4)3412H( 5) 4C2AH( 6) 7856H ( 7) 65B7H7. 行下列指令后, DX寄存器中的内容是多少?TABLEDW 25, 36, 1, 16, 10000, 13PYLDW 7MOV BX, OFFSET TABLEADD BX, PYLMOV DX, BX解: DX = 10FFH由 -16(FFF0H )的高 8 位和 10000( 2710H )的低 8 位构成8. 如果堆 的起始地址 2200: 0000, 底 0100H,( SP) 00A8H,求( 1) 地址;( 2) SS的内容;( 3)再存入数据

14、5678H, 3AF2H后, SP的内容。解: 地址00A8H , SS = 2200H, 再存入 2 个字后, SP = 00A4H9. 已用 指令 EQU定 了 4 个 符:N1 EQU 2100N2 EQU 10N3 EQU 20000N4 EQU 25000下列指令是否正确?并 明原因。(1) ADD AL, N1 N2;( 2) MOV AX, N3 N4;(3) SUB BX, N4 N3;( 4) SUB AH, N4 N3 N1;(5) ADD AL, N2;( 6) MOV AH, N2*N2解:( 1) 。 N1-N2=2090255( 2)正确( 3)正确.( 4)错误。

15、 N4-N3-N1=2900255( 5)正确( 6)正确10. 按下列要求写出指令:( 1)将 AX寄存器的低 4 位清零,其余位不变;( 2)将 BX寄存器的低 4 位置 1,其余位不变;( 3)将 AL 寄存器的低 4 位保持不变,高 4 位取反;( 4)测试 BX中的位 1 和位 2,当这两位同时为0 时将 AL 置 0FFH,否则 AL 清零;( 5)测试 BX中的位 1 和位 2,当这两位有一位为0 时将 AL 置 0FFH,否则 AL 清零;( 6)将 AL 中保存的字母ASCII 码变换成相应的大写字母的ASCII 码;( 7)将 AL 中保存的字母ASCII 码变换成相应的小

16、写字母的ASCII 码;( 8)将 AX中的各位取反;( 9)将 DX中的低 7 位取反,高 9 位不变;( 10)将 CX中的低 8 位与高 8 位互换。解:( 1) AND AX , 0FFF0H( 2) ORBX , 000FH( 3) XORAL , 0F0H( 4)TESTBX , 06H( 5)MOVAX , BXJZZEROANDAX , 06HMOVAL , 00HXORAX ,06HJMPOVERJZOVERZERO : MOVAL , 0FFHMOVAL , 0FFHOVER :OVER :( 6) AND AL , 5FH或者:CMPAL , 61HJLOVER(无需变换

17、或不是字母)CMPAL , 7AHJGOVER(不是字母)AND AL , 5FH或SUBAL , 20HOVER :.( 7) OR AL , 20H或者:CMPAL , 41HJLOVER(不是字母)CMPAL , 5AHJGOVER(无需变换或不是字母)OR AL , 20H或ADDAL , 20HOVER :( 8) XORAX , 0FFFFH或者NOTAX( 9) XOR DX , 007FH( 10)XCHG CH, CL11. 写出完成下述功能的程序段:( 1)传送 40H 到 AL 寄存器;( 2)将 AL 的内容乘以 2;( 3)传送 16H 到 AH寄存器;( 4) AL

18、 的内容加上 AH的内容。计算最后结果( AL)?解:( 1) MOVAL,40H( 2) SHL AL,1( 3) MOV AH,16H( 4) ADD AL , AH AL=96H12. 写出完成下述功能的程序段:( 1)从缓冲区BUF的 0004 偏移地址处传送一个字到AX寄存器;( 2)将 AX寄存器的内容右移 2 位;( 3)将 AX内容与 BUF的 0006 偏移地址处的一个字相乘;( 4)相乘结果存入 BUF的 0020H 偏移地址处(低位在前) 。解: ( 1) LEA SI, BUF.MOVAX, SI+4(2)SHRAX,1SHRAX,1(3)MULWORD PTR 6SI

19、(4)MOV20HSI,AXMOV22HSI,DX13.设( BX) 11001011B,变量 VAR的内容为00110010B,求下列指令单独执行后BX的内容:( 1) XOR BX, VAR;(2) AND BX, VAR;( 3) OR BX, VAR;(4) XOR BX, 11110000B;( 5) AND BX, 00001111B;(6) TEST BX, 1解:( 1) 00F9H( 2) 0002H( 3) 00FBH( 4) 003BH( 5) 000BH( 6) 00CBH14. 设( DX) 10111011B,( CL) 3,( CF) 1,求下列指令单独执行后DX

20、的内容:( 1) SHR DX, 1;( 2) SAR DX, CL;(3) SHL DX, CL;( 4) SHL DX, 1;( 5) ROR DX, CL;(6) ROL DL, CL;( 7) SAL DH, 1;( 8) RCL DX, CL;(9) RCR DL, 1解: DX= 0000 0000 1011 1011BCF=1CL=3( 1) SHRDX , 1DX 逻辑右移 10000 0000 0101 1101B=005DH( 2) SAR DX , CLDX 算术右移 30000 0000 0001 0111B=0017H( 3) SHL DX , CLDX 逻辑左移 3

21、0000 0101 1101 1000B=05D8H( 4) SHL DX , 1DX 逻辑左移 10000 0001 0111 0110B=0176H( 5) RORDX , CLDX 循环右移 30110 0000 0001 0111B=6017H( 6) ROLDL , CLDL 循环左移 30000 0000 1101 1101B=00DDH( 7) SAL DH , 1DH 算术左移 10000 0000 1011 1011B=00BBH( 8) RCL DX , CLDX 带进位循环左移 30000 0101 1101 1100B= 05DCH.( 9) RCRDL , 1DL 带

22、进位循环右移10000 0000 1101 1101B=00DDH15. 选择题(各小题只有一个正确答案)( 1)执行下列三条指令后:MOV SP, 1000HPUSH AXCALL BXa.( SP) 1000H;b.( SP) 0FFEH;c.( SP) 1004H;d.( SP) 0FFCH;( 2)要检查寄存器AL 中的内容是否与AH相同,应使用的指令为:a. AND AL, AHb. OR AL, AHc. XOR AL, AHd. SBB AL, AH( 3)指令 JMP NEAR PTR L1与 CALL L1( L1 为标号)的区别在于:a.寻址方式不同;b.是否保存IP 的内

23、容;c.目的地址不同;d.对标志位的影响不同。解:( 1) DPUSHU AX 则 AX 入栈, SP=0FFEH ; CALL BX则 IP 入栈, SP=0FFCH( 2) C 异或,若相同,则 AL=0 ,ZF 1。( 3) B16. 寄存器 DX: AX组成 32 位数, DX为高位,编写程序段实现:( 1) DX: AX右移 3 位,并将移出的低3 位保存在CL 中;( 2) DX: AX左移 3 位,并将移出的高3 位保存在CL 中;解:( 1)移出的3 位应该按时序移入CL 中。XOR CL,CLMOV BL,3L1:SHRDX , 1RCRAX , 1RCLCL , 1DECB

24、LJNZL1( 2)移出的 3 位应该按时序移入 CL 中。XOR CL,CL.MOV BL,3L1:SHLAX , 1RCRDX , 1RCRCL , 1DECBLJNZL117.编写程序段实现将BL 中的每一位重复4 次,构成32 位的双字DX : AX ,例如当BL 01011101B 时,则得到的( DX ) 0F0FH ,( AX ) 0FF0FH 。解:算术右移时,移入的值就是最高位本身, 这样可以使位内容重复, 利用这一点可以实现题目的要求。XORDX,DXXORAX,AXMOVCX,4L1: SHRBL,1RCRAX,1SARAX,1SARAX,1SARAX,1LOOPL1MO

25、VCX,4L2: SHRBL,1RCRDX,1SARDX,1SARDX,1SARDX,1LOOPL218. 字变量 VAR1 中保存有小于38250 的 16 位无符号数,编写程序段实现VAR1 150,并进行四舍五入操作,将商保存在字节变量VAR2 中。解:根据题意,38250 150255,因此商不会超过255,可以用一个字节表示。a b 的四舍五入操作可以通过判断除后余数实现:余数大于等于除数的一半,则商加 1;.否则不用加1。但这种方法用汇编语言编程实现时比较复杂,这里介绍另外一种方法:设ab 的四舍五入后的结果为c,用表示取整数操作,则aa b2c0.5bb这种方法是在除法操作之前,

26、在被除数上加上除数的一半,这样除法操作后得到的值就是考虑了四舍五入的商。VAR1DW12345VAR2DB ?DATAADB 150MOVAX,V AR1XORBX,BXMOVBL,DATAASHRBX,1ADDAX,BXDIVDATAAMOVVAR2,AL19. 有一组无符号的16 位数据保存在BUFFER 中,前两个字节存放数据的个数,编程实现按下式进行滤波处理:y(k)1x(k 1) x(k2)k2x(k)3y(k)x(k)k2解:滤波结果保存在FILT 中。BUFFER DW 0CHDW 33H, 18H, 1BH, 06H, 33H, 08HDW 3H, 6H, 0FH, 51H,

27、05H, 0CHFILT DW 100H DUP ( ?)LEA SI,BUFFERLEA DI,FILT.MOV CX,SIMOV DI,CXADD SI,2ADD DI,2XOR DX,DXMOV AX,SIMOV DI,AXMOV BX,2SIMOV 2DI,BXADD SI,4ADD DI,4DEC CXDEC CXADD AX,BXADC DX,0MOV BX,3L1:ADD AX,SIADC DX,0PUSH DXPUSH AXDIV BXMOV DI,AXPOP AXPOP DXSUB AX, SI-4SUBB DX,0ADD DI,2ADD SI,2LOOP L1.20. 在由

28、字符串构成的缓冲区 BUFFER 中,前 2 个字节存放字符个数,后续每个字节存放一个字符的 ASCII 码。编写程序实现将字符串 2004替换成 2006。解:在数据段中定义:BUFFERDW 74DB This year is 2004. In 2004, we have a plan for reducing annual expensive 10% DESTDB 2004在代码段中编写程序段:CLDLEASI, BUFFERMOVCX,SIADDSI,2LEADI,DESTL1:PUSHSIPUSHDIPUSHCXMOVCX,4REPZSCASBJNZL2MOVBYTE PTR SI-

29、1, 6L2:POPCXPOPDIPOPSIINCSIINCDILOOPL121. 定义有下列宏指令:WAGS MACRO S1,S2,S3SUB AX,AX.MOV DX,AXADD AX,S1ADD AX,S2ADC DX,0ADD AX,S3ADC DX,0ENDM当采用宏调用指令“WAGS 60000 , 25000,3000 ”时,执行后DX AX 。解:宏指令WAGS 完成的功能为S1+S2+S3,结果放在DX:AX中。所以,调用“WAGS60000,25000,3000 ”时,其结果为DX=0001H, AX=57C0H22.对上题定义的宏指令,如果采用宏调用指令“WAGS BX

30、,CX,SI ”时,写出宏展开形式。解:调用“ WAGS BX,CX,SI ”时,宏展开形式:SUB AX,AXMOV DX,AXADD AX,BXADD AX,CXADC DX,0ADD AX,SIADC DX,023.写出宏指令SUMMING ,实现将字节缓冲区array 中的内容求校验和(保留低8 位),并保存在 VALUE 中。解:设 array 前两个字节保存缓冲区字节数,在宏指令SUMMING ,将 array 和 VALUE 作为形式参数。SUMMING MACRO array,VALUELEASI,arrayMOVCX,SIADDSI,2XORAL,ALL1:ADDAL,SIINCSI.LOOPL1MOVVALUE,ALENDM.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1