1、汇编期末复习题完整含答案版一、问答题1、写出8086操作数的寻址方式。8086的存储器寻址方式有哪些?答:操作数的寻址方式有:立即(数)寻址。寄存器寻址。存储器寻址。存储器寻址方式有:立即寻址。寄存器寻址。直接寻址。寄存器间接。寄存器相对。基址变址。相对基址变址。2、何谓中断向量,何谓中断号?答:中断向量即中断服务程序的入口地址。中断类型号是系统分配给每个中断源的代号。3、试写出由逻辑地址计算物理地址的计算公式。写出8086在存储器寻址下,存储单元的逻辑地址的表示形式。答:PA=段基址*16+偏移量 LA=段基址:偏移量4、在存物理地址为00002H起的字单元存放7856H,请用图表示出它们在
2、存储器里存放的情况。 5、在物理存地址为00002H起的字单元存放3412H,请用图表示出它们在存储器里存放的情况。6、8088的寻址空间有多大?要寻址全部存空间必须采用什么技术措施?答:1MB,分段寻址7、寄存器间接寻址方式可使用哪些寄存器?答:在8086中:BX/BP/SI/DI8、在分断技术中,寄存器BX和BP默认对应的段寄存器是哪些?答:BX对应的是DS,BP对应的是SS。9、寄存器相对寻址方式中的位移量可以用什么形式表达?答:位移量=EA基址(变址*比例因子)10、微机的存的最小编址单位是什么?字型数据在存的中的存放原则是什么?答:最小编址单位是B,存放原则是先低字节,后高字节。11
3、、基址变址寻址方式的可用寄存器有哪些?答:BXSI/BXDI12、写出相对基址变址寻址方式的偏移地址EA的计算公式。答:EA=位移量+基址+变址13、在存物理地址为30476H起的连续地址空间存放了一个值为90634511H的双字型数据,请用图表示出它们在存储器里存放的情况。14、在存物理地址为65780H起的连续地址空间存放了一个值为12345678H的双字型数据,请用图表示出它们在存储器里存放的情况。15、条件转移指令的转移围是多少?答:12812716、LOOP指令使用的循环计数器是什么?答:CX.17、设有变量ABCD,要取它的偏移地址送到寄存器AX中,可用哪两种方法?用指令表达出来。
4、答:LEA AX,ABCD MOV AX,ABCD18、子程序调用时传递参数的三种基本方法是什么?答:通过寄存器传送。通过堆栈传送。通过变量传送。19、串操作指令在使用前应做哪些准备工作?答:把存放在数据段中的源串首地址(如反向传送则应是末地址)放入源变址寄存器中。把将要存放数据串的附加段中的目的串首地址(或反向传送时的末地址)放入目的变址寄存器中。把数据串长度放入计数寄存器。建立方向标志。二、简答题写出下列各指令的源操作数的寻址方式。(1)MOV AX,0AH 立即寻址 (21)SUB CX,0CFH 立即寻址(2)MOV BX,12H 立即寻址 (22)MOV DX,49H 立即寻址(3)
5、MOV BX,CL 寄存器寻址 (23)ADDC BP,DL 寄存器寻址(4)MOV BX,CX 寄存器寻址 (24)ACHG BX,AH 寄存器寻址(5)MOV AX,200H 直接寻址 (25)AND AX,ES:buf 直接寻址(6)MOV AX,100H 直接寻址 (26)MOV CX,SS:buf 直接寻址(7)MOV BX,BX 寄存器间接寻址 (27)XOR AX,DI 寄存器间接寻址(8)MOV AX,BX 寄存器间接寻址 (28)MOV CX,BX 寄存器间接寻址(9)MOV AX,BP 寄存器间接寻址 (29)OR DX,BP 寄存器间接寻址(10)MOV DX,BP 寄存
6、器间接寻址 (30)MOV CX,BP 寄存器间接寻址(11)MOV AX,SIBX 基址变址寻址 (31)AND DL,BP+DI 基址变址寻址(12)MOV CX,BXSI 基址变址寻址 (32)MOV BX,SI+BP 基址变址寻址(13)MOV DI,BX+20 相对基址寻址 (33)XOR SI,56BX 相对基址寻址(14)MOV DI,20BX 相对基址寻址 (34)MOV DI,BX+30 相对基址寻址(15)MOV DH,VALBX 相对基址寻址 (35)ADD DL,bufBX 相对基址寻址(16)MOV DH,ARRYBX 相对基址寻址 (36)MOV AL,buf+BP
7、 相对基址寻址 (17)MOV DS,VAL 直接寻址 (37)MOV DS,BX+DI 基址变址寻址(18)MOV DS,ARRY 直接寻址 (38)MOV DS,BX+SI 基址变址寻址(19)MOV BX,VALBXSI 相对基址变址寻址 (39)MOV AH,buf+BP+DI 相对基址变址寻址(20)MOV BX,ARRYBXDI 相对基址变址寻址 (40)ADD AL,buf+BX+SI 相对基址变址寻址三、判断题对者在题号前的括号中打“”,错的打“”()1.SBB AL,DX ()1.XCHG BX,AX()2.MOV CX,DX ()2.XOR BL,CX()3.CMP BX,
8、DI ()3.CMP AX,SI()4.CMP BP,BX ()4.POP DI()5.POP DI ()5.POP AX()6.POP SI ()6.PUSH CL 堆栈操作以字为单位()7.PUSH AL 堆栈操作以字为单位 ()7.PUSH AL 堆栈操作以字为单位()8.PUSH DL 堆栈操作以字为单位 ()8.OR BYTE PTR BP,98()9.MOV BYTE PTR BP,124 ()9.AND BX,255()10.MOV BYTE PTR BX,100 ()10.SUB SI,BYTE PTR 35()11.ADD DI,BYTE PTR 24 ()11.MOV BP
9、,10()12.SUB BP,BYTE PTR 10 ()12.DEC CX CX不能间接寻址 ()13.DEC DX DX不能间接寻址 ()13.INC 8BX()14.INC 2BX ()14.SHL AL,1()15.ROR BL,1 ()15.MOV BX,DX DX不能间接寻址 ()16.MOV CX,DX DX不能间接寻址 ()16.MOV bufBPSI,CL()17.MOV DATBPDI,AL ()17.MOV bufBXDI,CX()18.MOV DATBXSI,AX ()18.ADDC AL,BYTE PTR AC(AC为字变量)()19.SUB AL,BYTE PTR
10、AC(AC为字变量) ()19.CMP CX,WORD PTR WL(WL为字节变量)()20.ADD CX,WORD PTR WL(WL为字节变量) ()20.ADD BX,DI四、程序填空题1、要求用移位指令实现(BX)(BX)*9 MOV AX,BXMOV CL,3 SHL AX,CL ADD BX,AX2、要求用移位指令实现(BX)(BX)*5MOV AX,BX MOV CL,2SHL AX,CLADD BX,AX 3、假设程序中数据定义如下:ASD DB 3要求把变量ASD的值在显示器上显示出来。MOV DL,ASDADD DL,30HMOV AH,2INT 21H 4、假设程序中数
11、据定义如下:X DB 3要求把变量X的值在显示器上显示出来。MOV DL,X ADD DL,30HMOV AH,3 INT 21H5、假设程序中字符串MESS定义如下:MESS DB ABCDEF要求把字符串MESS送到显示器上显示出来。LEA DX,MESSMOV AH,9 INT 21H6、假设程序中字符串BUF定义如下:BUF DB ABCDEFMOV AH,9 INT 21H 7、假设程序中数据定义如下:BUF DB 32 DUP (?)要求在BUF中查找第一个B.CLDMOV CX,32 MOV AL,BLEA DI,BUFREPEN SCASB8、假设程序中数据定义如下:BUF D
12、B 38 DUP(?)要求在BUF中查找第一个MCLDMOV CX,38MOV AL,MLEA DI,BUFREPEN SCASB 9、比较两个字符串B1和B2,其长度为20个字节,找出它们相匹配的位置。LEA SI,B1LEA DI,B2CLD MOV CX,0014H REPNE CMPSB10、比较两个字符串STR1和STR2,其长度为45个字节,找出它们不相匹配的位置。LEA SI,STR1LEA DI,STR2CLD MOV CX,002DH REPE CMPSB五、写出下列程序(段)的执行结果。1、CODE1 SEGMENTASSUME CS:CODE1 MAIN PROC FAR
13、 START: PUSH DS XOR AX,AX PUSH AX MOV CH,4 MOV BX,01111B ROT1: MOV CL,4 ROL BX,CL MOV DL,BL AND DL,0FH ADD DL,30H CMP DL,3AH OUT1 ADD DL,7H OUT1: MOV AH,2 INT 21H DEC CH JNZ ROT1 RET MAIN ENDP CODE1 ENDS END MAIN此程序执行后,屏幕上显示的容为:C48F2、DATA SEGMENTBUF DB 7,9,6DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DA
14、TABEGIN: MOV AX,DATA MOV DS,AX MOV CX,2 MOV BX,OFFSET BUF MOV SI,1 MOV AL,BUF AAA: CMP AL,BX+SI JL NEXT MOV AL,BX+SI NEXT: INC SI LOOP AAA MOV DL,AL ADD DL,30H MOV AH,2 INT 21H MOV AH,4CH INT 21H CODE ENDS END BEGIN执行此程序后,屏幕上显示的容为:6 (此程序功能是将串中小于7的数字屏显出来)3、MOV AL,03HMOV CL,2SHL AL,CL此指令段执行后,AL中的值为:0C
15、H (即3*2*2=12)4、MOV AL,40H MOV CL,2 SHR AL,CL此程序段执行后,AL中的值为:10H (即64/2/2=16)5、CODE SEGMENTASSUME CS:CODE MAIN: MOV AH,1 INT 21H MOV AH,2 MOV DL,AL ADD DL,30H INT 21H MOV AH,4CH INT 21H CODE ENDS END MAIN设输入数字7,其输出结果是多少? 76、CODE SEGMENTASSUME CS:CODE MAIN: MOV AH,1 INT 21H ADD AL,2 MOV AH,2 MOV DL,AL
16、ADD AL,30H INT 21H MOV AH,4CH INT 21H CODE ENDS END MAIN设输入数字3,其输出结果是多少? 5六、程序设计1、求两个字节数X和Y的2倍放到Z单元中。设X与Y的和是字节数。DATA SEGMENT X DB 2Y DB 2 Z DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AX MOV BL,XMOV CL,YADD BL,CLMOV CL,BL ADD CL,BL MOV Z,CL MOV DL,Z ADD DL,30H MOV AH,02H
17、 INT 21HMOV AH,4CH INT 21HCODE ENDS END START2、求两个字节数X和Y的平均数放到Z单元中。DATA SEGMENT X DB 7 Y DB 8 Z DB ? /商 W DB ? /余数DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV BL,X MOV CL,Y ADD BL,CL CBW MOV AX,BX MOV CL,2 DIV CL MOV Z,AL MOV W,AH MOV DL,Z ADD DL,30H MOV AH,02H INT 21
18、H MOV DL,W ADD DL,30H MOV AH,02H INT 21H MOV AH,4CH INT 21HCODE ENDS END START3、编写程序,把从键盘读入的一个小写字母转换成相应的大写字母,并输出。(注:对应大小写字母之间的ASCII码值相差20H)PROGNAM SEGMENTMAIN PROC FAR ASSUME CS:PROGNAMSTART: PUSH DS SUB AX,AX PUSH AXNEXT: MOV AH,1 INT 21H CMP AL,A EXIT CMP AL,Z JA EXIT SUB AL ,20H MOV DL,AL MOV AH,
19、2 INT 21H MOV DL,0AH MOV AH,2 INT 21H JMP NEXTEXIT: RETMAIN ENDPPROGNAM ENDS END START4、编写程序,把从键盘读入的一个大写字母转换成相应的小写字母,并输出。(注:对应大小写字母之间的ASCII码值相差20H)PROGNAM SEGMENTMAIN PROC FAR ASSUME CS:PROGNAMSTART: PUSH DS SUB AX,AX PUSH AXNEXT: MOV AH,1 INT 21H CMP AL,A EXIT CMP AL,Z JA EXIT ADD AL ,20H MOV DL,AL
20、 MOV AH,2 INT 21H MOV DL,0AH MOV AH,2 INT 21H JMP NEXTEXIT: RETMAIN ENDPPROGNAM ENDS END START5、已知数组X包含有8个无符号整数,编写对其中的每个奇数计算1+2+N,并把它们顺序存入存字单元SUM开始的存储区中,要求1+2+N用子程序实现。不考虑溢出。DATA SEGMENTX DW 2,3,4,5,6,7,8,9SUM DW 8 DUP (?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN: MOV AX,DATA MOV DS,AX LEA BX,
21、X LEA DI,SUM MOV CX,8NEXT: MOV DX,BX MOV AX,DX SHR AX,1 JNC N1 CALL SUB1 MOV DI,AX ADD DI,2N1: ADD BX,2 LOOP NEXT MOV AH,4CH INT 21H SUB1 PROC NEAR PUSH CX XOR AX,AX MOV CX,DXAGAIN: ADD AX,CX LOOP AGAIN POP CX RETSUB1 ENDPCODE ENDS END MAIN6、已知数组X包含有8个无符号整数,编写对其中的每个偶数计算1+2+N,并把它们顺序存入存字单元SUM开始的存储区中,要
22、求1+2+N用子程序实现。不考虑溢出。DATA SEGMENTX DW 2,3,4,5,6,7,8,9SUM DW 8 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN: MOV AX,DATA MOV DS,AX LEA BX,X LEA DI,SUM MOV CX,8NEXT: MOV DX,BX MOV AX,DX SHR AX,1 JC N1 CALL SUB1 MOV DI,AX ADD DI,2N1: ADD BX,2 LOOP NEXT MOV AH,4CH INT 21H SUB1 PROC NEAR PUSH CX XOR AX,AX MOV CX,DXAGAIN: ADD AX,CX LOOP AGAIN POP CX RETSUB1 ENDPCODE ENDS END MAIN注:编者水平有限,不能保证所有答案都正确,如发现错误之处,请指出。卷上部分答案来源于互联网,不代表标准答案,此卷仅供参考。最后两个编程题中有一道考试必考!我只能帮你们到这里了!呵呵
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1