当前位置:首页 > 微机原理与接口技术期末复习知识点总结
ORG 100H ARRAY DW 10, 20, 30, 40, 50, 3 以下指令分别执行后,目的寄存器内容是多少?
MOV BX, OFFSET ARRAY ; BX=100H MOV SI, 0 ; SI=0 ADD SI, [ARRAY+10] ; SI=3
5.已知当前数据段有两个数分别为 65H 和 FEH;假定两个是带符号数,写出两数相除的指令,结果商保留 在 AL 中,余数保留在 AH 中。
假设已定义变量: NI DB 65H 则: MOV AL, N1 N2 DB 0FEH CBW IDIV BYTE PTR N2 6.有变量定义语句如下:
BUFF DB 1, 2, 3, ’0123’ EBUFF DB 0 LENG EQU EBUFF-BUFF
问LENG的值为多少? 是6
7.设程序中的数据定义如下: STRING DB 30 DUP(?) LIST DB 11H, 22H, 33H, 45H
1)用一条 MOV 指令将 STRING 的偏移地址放入 BX。 MOV BX, OFFSET STRING 2)用一条指令将 LIST 的头两个字节的内容放入 SI。 MOV SI, WORD PTR LIST
1.设(BX)=3000H,(SI)=5CB2H,位移量DISP=2AF6H,试确定以下各种寻址方式下的偏移量即有效地址为多少?
1)直接寻址:2AF6H 2)使用SI的寄存器间接寻址:5CB2H 3)使用SI的寄存器相对寻址:5CB2H +2AF6H=87A8H
4)基址变址寻址:3000H+5CB2H=8CB2H 5)相对基址变址寻址:3000H+5CB2H+2AF6H=0B7A8H
4.判断下列指令的正误。 (参考图2-9)
1) MOV DS, 2000H (X) 2) POP CS (X) 3) MOV AL,
2345H (X)
4) MOV [BX], [SI] (X) 5) INC [BX] (X) 6) MOV AX, 12H (√)
7) LEA BX, 8[SI] (√) 8) MOV [SI+1000H], 23H (X)
9) MOV AX, [SI][DI] (X) 10) SHL AX, 3 (X) 11) IN AX, DX (√) 12) MUL 68 (X) 13) PUSH CH (X) 14) JMP BYTE PTR[BX] (X) 5.设(SS)=80A0H,(SP)=1C0H,执行3次进栈操作,栈顶的物理地址为多少?如果再执行2次出栈操作,请问段寄存器SS和指针寄存器SP的内容为多少? 80A00H+1C0H-3*2= 80BBAH; SS=80A0; SP=1BAH; 80BBAH+2*2= 80BBEH; SS=80A0; SP=1BEH;
6.试比较指令”SUB AX, 0”与”CMP AX, 0”的异同,两者在编程时是否可以互相代替? 不同:前者”目的操作数”将被运算结果替换,后者则维持不变; 相同:执行相同的减法操作,对标志位的影响相同;
可以互相代替,因为”源操作数”特殊,为0;前者的目的操作数减0后数值不变! 7.设ARRAY是字数组的首地址,要求用不同寻址方式给出将其第3个元素送AX寄存器的指令。
1)直接寻址 MOV AX, [ARRAY+6];
2)寄存器间接寻址LEA BX, ARRAY; ADD BX, 6; MOV AX, [BX] 3) 寄存器相对寻址LEA BX, ARRAY; MOV AX, 6[BX]; 4) 基址变芷寻址 LEA BX, ARRAY; MOV SI, 6; MOV AX, [BX+SI]; 8.一个16位(字型)有符号数与一个8位(字节型)有符号数如何比较大小 将8位带符号数送入AL,然后用CBW,将其扩展为16位带符号数后再比较。
9.比较指令”AND AX, 1”与”TEST AX, 1”的异同,两者在编程时是否可以互相代替? 不同:前者”目的操作数”将被运算结果替换,后者则维持不变;
相同:执行相同的与运算,对标志位的影响相同; 不可以互相代替!
10.编写程序段:求两个无符号的4字节数的和,这两个数分别存放在当前数据段从1000H和2000H开始的存储单元中,将结果存放在2000H开始的存储单元中。 (补充条件:低位放低地址,高位放高地址) MOV BX, 2000H MOV AX, [1000H]
ADD [BX], AX MOV AX, [1002H] ADC 2[BX], AX
11.编写程序段:若DX,AX中存放32位无符号二进制数,试利用移位指令,实现将其分别乘以2和除以2。
乘以2: SAL AX, 1 ; RCL DX, 1 ;
除以2: SHR DX, 1 ;此处不能用SAR! RCR AX, 1 ; 12.编写程序段实现下列要求:
1)使AX的高4位和低2位为0,其余位保持不变。 AND AX, 0000111111111100B;(0FFCH)
3)比较两个无符号数(AX)>=(2000H)时,CL<=1,否则CL<=-1 MOV CL, 1 CMP AX, 2000H JAE Z3 MOV CL, 0FFH Z3: ……
14.编写数据段定义,在段中依次定义以下变量: var1 DB ?(var1 为字节型变量,初值不定; )
var2 DB ’I am a student.’(var2 为字节型变量,初值是字符串’I am a student.’;) var3 DB ’256’(var3 为字节型变量,初值是以ASCII形式表示的整数256) var4 DW 20 DUP(?) (var4 为字型变量,20个初值不定;) var5 DD 1200(var5 为双字型变量,初值是1200; )
15.在指令”AND AX, OPD1 AND OPD2”中,OPD1和OPD2是两个已赋值的变量,问两个AND操作分别在什么时间进行?有什么区别?
答: 第一个在程序执行的时候进行,第二个在汇编的时候进行。区别在于第一个对应实际的机器指令,第二个在汇编时会处理,不产生实际机器指令。
共分享92篇相关文档