汇编语言习题册,有答案已经收编-.pdf
《汇编语言习题册,有答案已经收编-.pdf》由会员分享,可在线阅读,更多相关《汇编语言习题册,有答案已经收编-.pdf(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 汇编语言习题册(汇编语言课程设计组编制)汇编语言程序设计习题一填空题1 汇编语言是一种_,它用 _来表示操作码,用或来表示操作数或操作数地址,它与_是一一对应的。2 计算机中的指令由_和_两部分组成。3 指出下列指令源操作数的寻址方式:MOV AX,ARRAYFSI _ MOV AX,ES:BX _ MOV AX,200H _ MOV AX,BX+DI _ MOV AX,BX _ MOV AX,1200H _ MOV AX,20BX+SI _ MOV AX,DI+20 _ 4.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34
2、,(20102)=56H,(20103)=78H,(21200)=2AH,(21201)=4CH,(21202)=B7H,I(21203)=65H,下列指令执行后填入AX寄存器的内容:MOV AX,1200H ;(AX)=_ MOV AX,BX ;(AX)=_ MOV AX,1200H ;(AX)=_ MOV AX,BX ;(AX)=_ MOV AX,1100BX ;(AX)=_ MOV AX,BXSI ;(AX)=_ MOV AX,1100BXSI ;(AX)=_ 5.条件码中最主要的是_、_、_、_。6对于乘法、除法指令,其目的操作数存放在_或_中,而其源操作数可以用除_以外的任一寻址方式
3、。7当指令“SUB AX,BX”执行后,CF=1,说明最高有效位_;对 _数,说明操作结果溢出。8指令 SAR可用来 _除 2,而指令SHR则可用来 _除 2。9假设(DS)=B000H,(BX)=080AH,(0B080AH)=05AEH,(0B080CH)=4000H,执行指令2“LES DI,BX”后,(DI)=_,(ES)=_。10对于指令XCHG BX,BP+SI,如果指令执行前,(BX)=6F30H,(BP)=0200H,(SI)=0046H,(SS)=2F00H,(2F246H)=4154H,则执行指令后,(BX)=_,(2F246H)=_。11.假设(DS)=2000H,(BX
4、)=21256H,(SI)=528FH;位移量TABLE=20A1H,(232F7H)=3280H,(264E5H)=2450H,则执行指令 JMP BXSI后,(IP)=_;执行指令 JMP TABLEBX后,(IP)=_;执行指令 JMP BX后,(IP)=_。12在 1000H单元中有一条二字节指令JMP SHORT LAB,如果其中偏移量分别为30H、6CH、0B8H,则转向地址LAB的值分别为 _、_、_。13数据段中有以下定义:ARRAY1 EQU 16H ARRAY2 DW 16H 请指出下面两条指令的寻址方式:MOV AX,ARRAY1 ;寻址方式:_ MOV AX,ARRAY
5、2 ;寻址地址:_ 14下面两个语句的区别在于_、_。X1 EQU 1000H X2=1000H 15指令“AND AX,STR1 AND STR2”中,STR1和 STR2是两个已赋值的变量,两个AND的区别是 _、_。16条件转移指令的目标地址应在本条件转移指令的下一条指令地址的_个字节范围内。17指令 LOOPZ/LOOPE 是结果 _或_发生转移的指令。而指令LOOPNZ/LOOPNE则是结果或发生转移的指令。18调用指令CALL可分为 _、_、_和 _等四种调用。19换码指令XLAT完成的操作是 _。它经常用于把一种代码转换为另一种代码。如果执行此操作,应首先建立一个字节表格,但表格
6、的长度不能超过_。20下面两条指令执行后,(AH)=_。(AL)=_:MOV AH,10H MOV AL,10 21在汇编语言中,一个过程有NEAR和 FAR 两种属性。NEAR属性表明主程序和子程序_,FAR属性表示主程序和子程序_。22 如果 TABLE为数据段中0032 单元的符号名,其中存放的内容为1234H,执行指令“MOV AX,TABLE”后,(AX)=_;而执行指令“LEA AX,TABLE”后,则(AX)=_。23串处理指令规定源寄存器使用_,源串在 _段中;目的寄存器使用_,目的串必须在_段中。24近过程(NEAR)的 RET指令把当前栈顶的一个字弹出到_;远过程(FAR)
7、的 RET指令弹出一个字到_后又弹出一个字到_;IRET 指令是 _指令,它从堆栈顺序弹出3 三个字分别送到_、_和_中。25_过程定义结束伪指令,与_配套使用。_或是段定义结束伪指令,与_配套使用;或是结构定义结束伪指令,与_配套使用。_是宏定义结束伪指令,与_配套使用。_是一个宏模块汇编结束伪指令。26对于指令:MOV BX,(PORT_VAL LT5)AND 20)OR(PORT_VAL GE 5)AND 30)当 PORT_VAL5 时,汇编结果为:MOV BX,_;否则,汇编结果为:MOV BX,_。27宏定义中允许使用宏调用,其限制条件是_。28宏的使用要经过三个步骤为_、_和_。
8、29从外设发出中断请求到CPU响应中断,有两个控制条件是起决定作用的,它们是_和_。这两个条件分别由_和_控制。30一个有 16 个字的数据区,它的起始地址为70A0:DDF6,那么该数据区的最后一个字单元的物理地址为_H。31COM 文件只有一个段并限制在64KB之内,COM 程序的堆栈是由_自动产生的,数据定义在 _段内。COM 程序总是从偏移地址_开始执行。32子程序又称为_,由伪操作 _定义,由 _结束,属性可以是_或_。33在标准子程序中,它所使用的工作寄存器一般要存入_保存,在返回调用程序之前,再 _它们的内容。34填入正确的过程属性。CODE1 SEGMENT,SUB PROC
9、_,RET SUB ENDP,CALL SUB,CODE1 ENDS,CODE2 SEGMENT,CALL SUB,4 CODE2 ENDS 35宏定义体包括实现子功能的指令和伪操作,如果宏定义体中有一个或多个标号,则必须用 _伪操作列出所有的标号。36令(AL)=98H,(BL)=12H,则执行指令MUL BL后,(AX)=_,(OF)=_,(CF)=_;而执行指令MUL BL 后,它的结果是(AX)=_,(OF)=_,(CF)=_。37执行下列指令序列后,完成的功能是将(DX,AX)的值 _ MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL
10、 OR DL,BL MOV BL,DL SHR DX,CL SHR BL,CL OR AH,BL 或者采用下面的方法,将(DX,AX)向右移四位。MOV CX,04 NEXT:SHR DX,1 RCR AX,1 LOOP NEXT 38对于下面的数据定义:A1 DW 20 DUP(?)A2 DW 20 DUP(?)A3 DW 987654321,MOV AX,LENGTH A1 MOV BX,LENGTH A2 MOV CX,LENGTH A3 各条指令执行后,相应寄存器的内容为:(AX)=_,(BX)=_,(CX)=_。39对于下面的数据定义,各条MOV 指令单独执行后,请填充有关寄存器的内
11、容。TABLE1 DB?TABLE2 DW 20 DUP(?)TABLE3 DB ABCD,MOV AX,TYPE TABLE1 (AX)=_ MOV BX,TYPE TABLE2 (BX)=_ MOV CX,LENGTH TABLE2 (CX)=_ 5 MOV DX,SIZE TABLE2 (DX)=_ MOV SI,LENGTH TABLE3 (SI)=_ 40某程序的数据段定义如下,请填写完整。DATA SEGMENT TAB DB MICROSOFT DB MS-DOS 6.22 DW 1234 DB IBM PS/2 TABLEN EQU_ ;数据长度 DATA ENDS 41程序段
12、如下:DATA SEGMENT ORG 2000H TWO=2 NUM DB 3,4 WORDS DW 1011H,2022H CHAR1 DB 2 DUP(?)TEN EQU 10 CHAR2 DB 5 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR START:PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV AL,TWO MOV WORK,AL TWO=TWO-1 ADD AL,TWO MOV WORK+1,AL RET MAIN ENDP CODE ENDS E
13、ND START 程序执行后,内存单元DS:2000HDS:200AH的值分别是 _、_、_、_、_、_、_、_、_、_、_,TWO 的值为 _。6 42下列程序段运行后,A单元的内容为_。DATA SEGMENT A DW 0 B DW 0 C DW 230,20,54 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV BX,OFFSET C MOV AX,BX MOV B,AX MOV AX,2BX ADD AX,B
14、 MOV A,AX RET START ENDP CODE ENDS END START 43分析以下程序段:ADD AX,BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4 JMP SHORT L5 如果 AX和 BX的内容给定如下:AX BX 147B 80DC B568 54B7 42C8 608D D023 9FD0 94B7 B568 7 该程序执行后,程序转向_、_、_、_、_。44设(SS)=0FFA0H,(SP)=00B0H,(AX)=8057H,(BX)=0F79H,执行指令“PUSH AX”后,(SP)=_;再执行指令 PUSH BX POP
15、AX 后,(SP)=_,(AX)=_,(BX)=_。45阅读下面的程序段。堆栈段分配了_个 ABCD 结构的空间,堆栈长度为_个字。如果程序中没有再设置SS、SP,那么经过汇编、连接后,(SP)=_。ABCD STRUC DLD_BP DW?RET_IP DW?RET_CS DW?PAR_2 DW?PAR_1 DW?ABCD ENDS S_SEG SEGMENT STACK ABCD 10 DUP()S_SEG ENDS 46阅读下列程序:DS_SEG SEGMENT COUNT DB 4 BLK1 DB 96H,74H,32H,16H BLK2 DB 65H,94H,87H,29H BLK3
16、 DB 4 DUP(?)DS_SEG ENDS CS_SEG SEGMENT MAIN PROC FAR ASSUME CS:CS_SEG,DS:DS_SEG START:PUSH DS SUB AX,AX PUSH AX MOV AX,DS_SEG MOV DS,AX MOV SI,OFFSET BLK1 MOV DI,OFFSET BLK2 MOV BX,OFFSET BLK3 MOV CL,COUNT MOV CH,0 CLC 8 NEXT:MOV AL,SI INC SI ADS AL,DI INC DI DAA MOV BX,AL INC BX LOOP NEXT RET MAIN
17、ENDP CS_SEG ENDS END START 该程序执行后,请填入BLK3的偏移地址和其中各字节单元的内容。_ _ BLK3 _ _ 以及_ _ 47在下列程序的括号中分别填入如下指令:(1)LOOP L20(2)LOOPE L20(3)LOOPNE L20 TITLE EXLOOP.COM CODE SEGMENT ASSUME CS:CODE,SS:CODE ORG 100H BEGIN:MOV AX,01 MOV BX,02 MOV DX,03 MOV CX,04 L20:INC AX ADD BX,AX SHR DX,1()RET CODE ENDS END BEGIN 在上述
18、三种情况下,程序执行完后,(AX)=_、(BX)=_、(CX)=_、(DX)_ _ _ 9=_。48已知下列程序段:DATA SEGMENT DB1 DB 12H,34H,0,56H DW1 DW 78H,90H,0AB46H,1234H ADR1 DW DB1 ADR2 DW DW1 BUF DB 5 DUP(0)DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR START:PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX XOR CX,CX MOV CL,3 ADD ADR1
19、,CX SUB ADR2,CX MOV BX,ADR1 MOV DI,BX MOV SI,ADR2 MOV AL,DB1BX MOV BUFDI,AL MOV AX,DW1BXSI MOV WORD PTR BUF,AX RET MAIN ENDP CODE ENDS END START 程序执行后,填入BUF的偏移地址和其中各字节单元的内容。偏移地址内 容?_?_?_?_?_ 49.在以 DS:5OC1为?_?_?_?_?_ 10 起始地址的表中存有字符串,它以 NULL(00H)作串结束符,在 DS:CHAR 中存有关键字。从上述表中查找第一个此关键字的程序段如下。若找到此关键字,寄存器
20、CX中存放该关键字在ES段中的位移量;若串中无此关键字,CX返回-1 值。请将该程序段的空格补充完整。MOV DI,OFFSET SOC1 MOV CX,0 CPO:CMP ES:_,00H JNE COUNT MOV BX,CX MOV DI,OFFSET CHAR MOV AL,DI MOV DI,OFFSET SOC1 CLD _SCASB JZ FOUND MOV CX,_ RET FOUND:_DI MOV CX,DI RET COUNT:INC DI INC CX JMP CPO 50(AL)=9AH,(BL)=0BCH,当分别进行下列指令运算后,请写出标志位的内容:?ADD AL
21、,BL ;ZF=_,PF=_,CF=_,SF=_,OF=_。?SUB AL,BL ;ZF=_,PF=_,CF=_,SF=_,OF=_。?AND AL,BL ;ZF=_,PF=_,CF=_,SF=_,OF=_。?OR AL,BL ;ZF=_,PF=_,CF=_,SF=_,OF=_。?XOR AL,BL ;ZF=_,PF=_,CF=_,SF=_,OF=_。51假设 X和 X+2单元的内容为双精度P,Y和 Y+2单元的内容为双精度数Q(X,Y为低位数),下列程序段使2PQ时,(AX)=1;2P Q时,(AX)=2,请把程序填写完整。MOV DX,X+2 MOV AX,X ADD AX,X ADC D
22、X,X+2 CMP DX,Y+2 _L2 _L1 CMP AX,Y _L2 11 L1:MOV AX,1 JMP EXIT L2:MOV AX,2 EXIT:INT 20H 52阅读下面的程序。在_的情况下,本段程序的执行结果是(AX)=0;在 _的情况下,其结果为(AH)=0FFH。IN AL,20H TEST AL,80H JZ A MOV AH,0 JMP B A:MOV AH,OFFH B:HLT 53已知程序如下:DATA SEGMENT (假定 DS=00BFH)ORG 1000H BLOCK DB 48H,8DH RESUL DB?DATA ENDS STACK SEGMENT
23、PARA STACK STACK DB 64 DUP(?)STACK ENDS CODE SEGMENT ASSUME CS:CODE,SS:STACK,DS:DATA START PROC 0000H BEGIN:MOV AX,DATA 0003H MOV DS,AX 0005H MOV SP,4000H 0008H LEA BX,BLOCK 000CH MOV AL,BX 000EH SUB AL,BX+1 0011H PUSH AX 0012H PUSHF 0013H CALL SUB1 0016H POPF 0017H POP AX 0018H MOV BX+2,AL 001BH HL
24、T START ENDP 12 001CH SUB1 PRO 001CH ADD AL,AL 001EH RET SUB1 ENDP CODE ENDS END BEGIN 程序运行后,请输入数据段、堆栈段的数据存放情况:(1)数据段数据存放情况:偏移地址内 容_ _ _(2)堆栈段数据存放情况:偏移地址内 容_ _ _ _ _ _ _(3)最后标志位为_。54下列程序段是比较AX,BX,CX中带符号数的大小,将最大的数放在AX中。请将程序填充完整。CMP AX,BX _NEXT XCHG AX,BX NEXT:_AX,CX JGE OUT _AX,CX OUT:,55以下程序实现的功能,结果
25、存放在中。STRAT:IN AL,20H MOV BL,AL INT AL,30H MOV CL,AL MOV AX,0 NEXT:ADD AL,BL _ _ _ 13 ADC AH,0 DEC CL JNZ NEXT HLT 56下面程序是查找STRING中是否有“A”这个字符,如果有则转向YES去执行;没有则转向 NO去执行。请将程序填充完整:MOV CX,20 ;假设 STRING的长度为20 MOV BX,-1 MOV AL,ANEXT:_BX CMP AL,STRINGBX _NEXT JNZ_ YES:,JMP_ NO:,EXIT:RET 57当执行下列指令后,(AL)=_ _,(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 习题 答案 已经 收编
限制150内