《微机原理---汇编语言习题(完整参考答案)》由会员分享,可在线阅读,更多相关《微机原理---汇编语言习题(完整参考答案)(14页珍藏版)》请在金锄头文库上搜索。
1、MIS 硬件原理复习内容1. 数的不同进制转换,原码、反码、补码转码,BCD 码2. 掌握 D 触发器逻辑3. D 触发器组成的电路:卡诺图及简化、真值表、波形图、状态转换图4. 三态门、总线结构5. 存储器扩展方法:地址总线的作用,内存分页技术,地址译码方法,译码器6. 86X 系列 CPU 结构框图7. 8086 寄存器组,寻址方式8. 指令,伪指令9. 数据定义,完整程序结构10. 汇编语言上机及调试过程1. 分别指出下列指令中的源操作数和目的操作数的寻址方式:(1) MOV SI, 200 (2) MOV CX, DATASI (3) ADD AX, BXDI (4) AND AX,
2、BX (5) PUSHF 2. 指出指令 MOV AX, 2010H 和 MOV AX, DS:2010H的区别3. 写出以下指令中内存操作数的所在地址 (1) MOV AL, BX+5 (2) MOV BP+5, 5(3) INC BYTE PTRSI+3(4) MOV DL, ES:BX+DI(5) MOV BX, BX+SI+24. 判断下列指令书写是否正确(1) MOV DS, 0100H (错)(2) MOV AL, BX (错)(3) MOV BL, F5H (错)(4) MOV DX, 2000H (对)(5) INC BX (对)(6) MOV 5, AL (错)(7) MOV
3、 BX, SI (错)(8) PUSH CS (对)(9) POP CS (错)5. 若 SP=2000H, AX=3355H, BX=4466H, 试指出执行下列指令后有关寄存器的值:(1) PUSH AX;执行后 AX=? SP=? (AX=3355H SP=1FFEH)(2) PUSH AXPUSH BXPOP DX;执行后 AX=? DX=? SP=?(AX=3355H DX=4466H SP=1FFEH)6. 假设想从 100 中减去 AL 中的内容,用 SUB 100, AL 是否正确?如果不对,应用什么方法? 7. 有如下程序,当 AL 某位为何值时,可将程序转至 AGIN2 语
4、句。AGIN1: MOV AL, DIINC DITEST AL, 04HJE AGIN1AGIN2: (AL 的第三位为 1)8. 编程使 (1) AX 寄存器低 4 位清零(2) BX 寄存器低 4 位置 1(3) CX 寄存器低 4 位求反(4) 用 TEST 指令测试 DL 寄存器位 3,位 6 是否同时为 0,若是,将0 送 DL;否则, 1 送 DH。9. 设 AX 寄存器中又一个 16 位二进制数,编一程序,统计 AX 中“1”的个数,统计结果送 CX 中。 10. 在下列程序的括号中分别填入如下指令:(1) LOOP L20 (AX=4, BX=11, CX=0, DX=0)(
5、2) LOOPE L20 (AX=2, BX=4, CX=2, DX=2)(3) LOOPNE L20 (AX=4, BX=11, CX=0, DX=0)试说明在三种情况下,当程序执行完成后,AX, BX, CX, DX 四个寄存器的内容分别是什么?MOV AX, 01 MOV BX, 02MOV CX, 03MOV DX, 04L20: INC AXADD BX, AXSHR DX, 1( )RET11. 假设 X 和 X+2 单元的内容为双精度数 p,Y 和 Y+2 单元的内容为 q, (X 和Y 为低位字)试说明下列程序段做什么工作?MOV DX, X+2MOV AX, XADD AX,
6、 XADC DX, X+2CMP DX, Y+2JL L2JG L1CMP AX, YJBE L2L1: MOV AX, 1JMP SHORT EXITL2: MOV AX, 2EXIT: INT 20H(当 2pq,AX=1H)12. 判断下列指令书写是否正确。(1) MOV AL, BX (错)(2) MOV AL, CL (对)(3) INC BX (对)(4) MOV 5, AL (错)(5) MOV BX, SI (错)(6) MOV BL, 0F5H (对)(7) MOV DX, 2000H (对)(8) POP CS (错)(9) PUSH CS (对)13. 设(BX)=0E3
7、H, 变量 VALUE 中存放的内容为 79H,确定下列各指令单独执行后 bx 的结果。(1) XOR BX, VALUE (BX =9AH)(2) AND BX, VALUE (BX =61H)(3) OR BX, VALUE (BX =0FBH)(4) XOR BX, 0FFH (BX =1CH)(5) AND BX, 0 (BX =0H)(6) TEST BX, 01H (BX =0E3H)14. 现有(DS)=2000H, (BX)=0100H, (SI)=0002H, (20100H)=12H, (20101)=34H, (20102)=56H, (20103)=78H, (2120
8、0)=2AH, (21201)=4CH, (21202)=B7H, (21203)=65H,实说明下列各条指令中源操作数的寻址方式,及各指令执行完成后 AX 寄存器的内容(1) MOV AX, 1200H (立即数寻址,AX=1200H)(2) MOV AX, BX (寄存器寻址,AX=0100H)(3) MOV AX, 1200H (直接寻址,AX=4C2AH)(4) MOV AX, BX (数据段基址寻址,AX=3412H)(5) MOV AX, 1100BX (寄存器相对寻址,AX=4C2AH)(6) MOV AX, BXSI (基址加变址寻址,AX=7856H)(7) MOV AX,
9、1100BXSI(相对的基址加变址寻址,AX= 65B7H)15. 执行下列指令后,AX 寄存器中的内容是什么TABLE DW 10, 20, 30, 40, 50ENTRY DW 3MOV BX, OFFSET TABLEADD BX, ENTRYMOV AX, BX (AX=1E00H)16. 将内存(10050H)单元的内容拆成两段,每段 4 位,并将它们分别存入内存(10051)和(10052)单元。即(10050)单元中的低 4 位放入(10051)的低 4 位, (10050)单元的高 4 位放入(10052)的低 4 位,而(10051)和(10052)的高 4 位均为零。设(1
10、0050)=7AHMOV AX, 1000HMOV DS, AXMOV SI, 50HMOV AL, SIAND AL, OFHMOV SI+1, ALMOV AL, SIMOV CL, 4SHR AL, CLMOV SI+2, AL17. 求 AX 累加器和 BX 寄存器中两个无符号数之差的绝对值,结果放在内存(2800)单元中。开始初始化用间址方法取数 AL用逻辑与指令取得低 4 位,存入(10051)单元再取出原始数 AL逻辑右移得高 4 位,存入内存(10052)单元初始化:清除CFAX-BX AXAX-BX=0AX 内存(2800)和(2801) 单元 BX-AX BXBX内存(28
11、00) 和(2801) 单元暂停开始CLCSUB AX, BXJC AAMOV DI, 2800HMOV DI, AXHLTAA: SUB BX, AXMOV DI, 2800HMOV DI, BXHLT18.编写程序,从内存(2071H)中取一个数 M,判断其值是否在 10 和 20 之间。如果 M=20,则送 0FF H 给(2073H) ;如果 M =0AL 内存(2073)BL=0暂停开始AL=20BL=0FFHBL=88H否否CLCCMP AL, 10JC LP1CMP AL, 20JC LP2MOV BL, 0FFHLP3: MOV (2073H),BLHLTLP1: MOV BL
12、, 00JMP LP3LP2: MOV BL, 88HJMP LP319.求两个多字节数之和。这两个数在 10050H 地址开始的内存单元内,连续存放,低位在小地址一端,结果放在这两个数之后。设这两个多字节数均为 8字节长。START: MOV AX, 1000HMOV DS, AXMOV SI, 50HMOV DI, 58HMOV BX, 60HMOV CX, 4CLCAA: MOV AX, SIADC AX, DIMOV BX, AXPUSHFADD SI, 2ADD DI, 2ADD BX, 2POPFLOOP AAHLT是CX=0暂停开始初始化:段地址 DS:1000H第一个指针 SI
13、=50H;第二个指针DI=58H结果指针 BX=60H;循环次数CX=4清除进位 CF取一个字 AX和数=前一次+(指针)即 AX AX+DI+CF修改指针、计数器SI SI+2; DI DI+2CX CX-1否20. Assume that you have a pointer (segment:offset) stored in memory at byte addresses 0A3004h through 0A3007h as follows:0A3004h = 00 0A3006h = 0C3h0A3005h = 10h 0A3007h = 50h21. 读下面程序段,请问:在什么情
14、况下,本段程序的执行结果是 AH=0?BEGIN: TEST AL, 80HJZ BRCH1MOV AH, 0JMP STOPBRCH1: MOV AH, 0FFHSTOP: HLT ( AL 的第八位为 1)22. 画出说明下列语句分配的存储空间及初始化的数值(1) BYTE_VAR DB BYTE, 12, 12H, 2 DUP (0,?, 3 DUP (1, 2),?)(2) WORD_VAR DB 4 DUP (0, 1, 2), ?, -5, BY, TE, 256H23. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来.BEGIN: MOV AH, 1INT 21HCMP AL, aJB STOPCMP AL, zJA STOPSUB AL, 20HMOV