收藏 分销(赏)

汇编复习题(含答案).doc

上传人:仙人****88 文档编号:9455040 上传时间:2025-03-26 格式:DOC 页数:21 大小:99.04KB 下载积分:10 金币
下载 相关 举报
汇编复习题(含答案).doc_第1页
第1页 / 共21页
汇编复习题(含答案).doc_第2页
第2页 / 共21页


点击查看更多>>
资源描述
一、单项选择题(本大题共20小题,每小题1分,共20分) 1.设A=0.4H,B=0.8H,C=0.4,D=0.4Q,它们之间的关系是( ) A. C+D=B B. A+D=B C. B=D D. A>C>D 2.标志寄存器中属于控制标志位的是( ) A.DF,OF,SF B.DF,IF,TF C.OF,CF,PF D.AF,OF,SF 3.8088/8086存储器分段,每个段不超过( ) A.64K个字 B.32K个字节 C.1兆个字节 D.64K个字节 4.设AL中已有压缩型BCD码,为实现对AL的减1操作,可选用的指令序列是( ) A.DEC AL B.SBB AL,0 AAS DAS C.SUB AL,1 D.SUB AL,1 AAS DAS 5.要输入端口1234H中的8位数据,其指令应是( ) A.MOV DX,1234H B.MOV DX,1234H OUT DX,AL 1N AL,DX C.1N AX,1234H D.OUT DX,1234H 6.若AX=-15要得到AX=15应执行的指令是( ) A.NEG AX B.NOT AX C.INC AX D.DEC AX 7.8086/8088系统执行传送指令MOV时( ) A.不影响标志位 B.影响DF方向标志 C.影响SF符号标志 D.影响CF进位标志 8.MOV AL,79 ADD AL,0B1H 上面指令执行后,设置的标志位CF和OF的值是( ) A.CF=0,OF=1 B.CF=1,OF=1 C.CF=0,OF=0 D.CF=1,OF=0 9.已知AX,BX中均为带符号数,当进行字相除时,下面指令或指令序列正确的是( ) A.DIV BX B.CWD IDIV BX C.XOR DX,DX D.CBW DIV BX IDIV BX 10.下列指令中操作数在代码段中的是( ) A.MOV AL,42H B.ADD AL,BL C.SUB [BX],DI D.1NC [DI] 11.用REPE SCASB指令对字符串进行扫描,如CX0时,扫描结束,那么表示( ) A.在字符串中遇上第一个AL中指定的字符 B.在字符串中有一个AL中指定的字符 C.在字符串中有一个不是AL中指定的字符 D.在字符串中遇上第一个不是AL中指令的字符 12.下列指令执行后对源和目的操作数均无影响的是( ) A.MOV [BX+2],AX B.SUB AX,2467H C.SBB [SI],BX D.CMP AX,BX 13.表示过程定义结束的伪指令是( ) A.ENDP B.ENDS C.END D.ENDM 14.下列有语法错误的语句是( ) A.DB 12H B.DW 4567H C.DD ˋBCDˊ D.DB ˋCDˊ 15.DB1 DB 8 DUP(2 DUP(3),3 DUP(2)) ┇ MOV AX,WORD PTR DB1 [04H] 上面指令执行后,AX的内容是( ) A.0302H B.0203H C.0202H D.0303H 16.BUF1 DB 3 DUP(0,2 DUP (1,2),3) COUNT EQU $ -BUF1 符号COUNT等价的值是( ) A.6 B.18 C.16 D.8 17.DA1 DW 2A05H DA2 DB 0FAH ┇ MOV AL,BYTE PTR DA1 SUB DA2,AL 上述指令执行后,DA2中的内容是( ) A.0DAH B.0FAH C.0F5H D.0D0H 18.设(SS)=338AH,(SP)=450H,执行PUSH BX,和PUSHF两条指令后,堆栈顶部的物理地址是( ) A.33CECH B.33CF2H C.33CF4H D.33CE8H 19.设(SP)=0028H,执行段内返回指令RET 6后,SP的内容是( ) A.0036H B.0022H C.0030H D.0020H 20.条件转移指令JNBE产生转移的条件是( ) A. CF=0 AND ZF=0 B. CF=0 AND ZF=1 C. CF=1 AND ZF=0 D. CF=1 AND ZF=1 21.与MOV BX,0FFSET VAR指令完全等效的指令是( )。 ①MOV BX,VAR ②LDS BX,VAR ③LES BX,VAR ④LEA BX,VAR 22.在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是( ). ①WORD ②PAGE ③BYTE ④PARA 23.在汇编语言程序的开发过程中使用宏功能的顺序是( )。 ①宏定义,宏调用 ②宏定义,宏展开 ③宏定义,宏调用,宏展开 ④宏定义,宏展开,宏调用 24.汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省 略的项是( )。 ①名字项 ②操作项 ③操作数项 ④注释项 25. MOV SP,3210H PUSH AX 执行上述指令序列后,SP寄存器的值是( )。 ①3211H ②320EH ③320FH ④3212H 25.BUF DW 10H DUP(3 DUP(2,10H),3,5) 上述语句汇编后,为变量BUF分配的存储单元字节数是( )。 ①80H ②100H ③124 ④192 二、简答题(本大题共3小题,每小题2分,共6分) 1.假设DS=2000H,COUNT=0100H,SI=0030H,指令MOV AX,COUNT[ST] ①写出源操作数的物理地址? ②该指令可否写成MOV AX,[COUNT+SI]? ①物理地址:20130H(1分) ②可以(1分) 2.下面指令有无错误?若有错,是什么错误? ①MOV AX,[SI][DI] ②CMP [SI],[BX] ①错,不能同时出现[SI],[DI](1分) ②错,存储单元之间不能直接比较(1分) 3.条件转移指令的判断条件除标志位PF外还有哪几个标志位? OF、ZF、SF,和CF的标志位(2分) 三、程序分析题(每小题6分,共36分) l.已知 AX=0FF60H,CF=1 MOV DX,96 XOR DH,0FFH SBB AX,DX 执行上述指令序列后,AX= 0 ,CF= 0 2.设寄存器AL,BL,CL中内容均为76H, XOR AL,0FH AND BL,0FH OR CL,0FH 执行上述指令序列后,AL= 79H BL= 06H CL= 7FH 3.已知AX=0A33AH,DX=0F0F0H AND AH,DL XOR AL,DH NEC AH NOT AL 执行上述指令序列后,AH= 60H ,AL= 35H 4. DATA SEGMENT S9 DB 0,1,2,3,4,5,6,7,8,9 DATA ENDS : LEA SI,S9 LEA, DI,S9+1 MOV CX,5 LOP: MOV AL,[SI] XCHC AL,[DI] MOV [SI],AL ADD SI,2 ADD DI,2 LOOP LOP 上述程序段运行后,S9开始的10个字节存储单元内容是什么? S9 DB 1,0,3,2,5,4,7,6,9,8 5. MOV AL,38H MOV BL,49H CALL SUB0 INC AL DEC CL ......... SUB0 PROC ADD AL,BL MOV CL,AL DAA RET SUB0 ENDP 上述程序段运行后,AL= 88H CL= 80H 6.ADR DW 1234H,5678H ┇ LEA SI,ADR LDS BX,ADR 设变量ADR的偏移地址是100H,上述两条指令执行后:SI= 100H ,BX=1234H 。 7.已知DS和ES指向同一个段,且当前数据段从0000H到00FFH单元内容分别为01,02,03,…,0FF,00H。问下列程序段执行后,0000~0009H的内容是些什么值。 MOV SI,0000H MOV DI,0001H MOV CX,0080H CLD REP MOVSW (从0单元开始的内容是01,01,02,02,04,04,06,06,08,08) 8.STR1 DB ˋCOMPUTERNDPASCALˊ SCA DB ˋNˊ ┇ LEA DI,STR1 MOV AL,SCA MOV CX,10H CLD REPNE SCASB NEXT:…… 程序运行到NEXT时CX= 7 ZF= 1 9.已知AX=0FFFFH,DX=0001H MOV CX,2 LOP:SHL AX,1 RCL DX,1 LOOP LOP 上述程序段执行后,DX= 0007H AX= 0FFFCH 10.已知DX=0A476H,CX=0302H,CF=1 OR DX,DX RCR DX,CL XCHG CH,CL RCL DX,CL 上述程序段执行后,DX= 48ECH CF= 1 11.MOV AX,10 SHL AX,1 SHL AX,1 MOV BX,AX MOV CL,2 SHL AX,CL ADD AX,BX 上述程序段执行后,BX= BX=40或28H AX= AX=200或00C8H 12.已知AX=78H,BX=0804H SHR BX,1 AND BX,0F0FH MOV CX,4 LOP:XCHG BH,BL DIV BL SAL AX,1 LOOP LOP 上述程序段执行后,AX= BX=40或28H BX= AX=200或00C8H 四.改错. 阅读下列数据传送程序段,改正使用不当的语句 A DB 35,47,2AH,'XYZ' B DB N DUP(0) N EQU $-A MOV SI, A MOV DI, B MOV CX, LENGTH A LP: MOV AX, [SI] MOV [DI], AX INC SI INC DI DEC CX LOOP LP 五.程序填空题(每空3分,共18分) 1.下面是程序段是判断寄存器AH和AL中第3位是否相同,如相同,AH置0,否则AH置全1.试把空白处填上适当指令. XOR AH,AL AND AH , 08H 1. JE ZERO MOV AH , 0FFH JMP NEXT ZERO: MOV AH, 0 NEXT : ........ 2.有一个首址为A的字数组,完成从大到小的排序. DATAREA SEGMENT A DW N DUP(?) DATAREA ENDS PROGRAM SEGMENT MAIN PROC FAR START : PUSH DS SUB AX, AX PUSH AX MOV DS ,AX MOV CX , N DEC CX LOOP1: MOV DI ,CX MOV BX ,0 LOOP2: MOV AX ,A[BX] CMP AX,A[BX+2] JGE CONTINE XCHG AX , A[BX+2] MOV A[BX] , AX CONTINE: ADD BX LOOP LOOP2 2. MOV CX,DI LOOP LOOP1 RET MAIN ENDP END START 3.该程序段的功能是求出存放在DX、AX中的双精度数的绝对值,并将结果保存在A和A+2单元中,请在空白处填写指令。 [1] JNS RESULT NOT AX NOT DX INC AX [2] RESULT: MOV A , AX MOV A+2 , DX 4. 下面程序执行后,AL的内容为ARRAY数组中的最小数,请在空白处各填上一条指令。 ARRAY DB 3,5,-3,-2,4,5,-8,6 ┇ MOV CX,7 MOV DI,0 MOV AL,ARRAY A1: INC DI ① CMPAL,ARRAY[DI] JLE A2 MOV AL,ARRAY [DI] A2 ② LOOP Al 5.下面程序段是判断两个存储单元是否同为正数,如是,则AX置全0,否则AX置非0。试在空白处各填上适当的一条条件转移指令(两空白处要利用不同的标志位选用不同的条件转移指令)。 VAR1 DW ×××× VAR2 DW ×××× ┇ MOV AX,VAR1 MOV BX,VAR2 XOR AX,BX ① JS NEXT TEST BX,8000H ② JNE NEXT MOV AX,0 NEXT:…… 6.以BUFF为首地址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中. BUF DB 5,6,7,58H,62,45H,127,....... COUNT EQU $-BUF MAX DB ? . . MOV BX ,OFFSET BUF MOV CX ,COUNT -1 MOV AL ,[BX] NXET: INC CX CMP AL ,[BX] JAE NEXT MOV AL, [BX] NEXT: DEC CX JNZ LOPI MOV MAX , AL 六、编制程序题(第1小题8分共16分) l.现有 data segment array dw 64 dup(?) dw 5 dup(?) data ends 试编写一程序段,要求在array+8到array+10(两者都包括在内)单元中插入5个0.(提示:先把从array+8单元开始的数据后移5个单元,然后再在规定位置插入0) 1. CODE SEGMENT ASSUME ,DS:DATA ,ES:DATA START: PUSH XOR AX,AX PUAH AX MV AX,DATA MOV DS ,AX MOV ES,AX MOV SI,OFFSET ARRAY+7EH MOV DI,OFFSET ARRAY+88H STD MOV CX,60 REP MOVSW MOV BX,OFFSET ARRAY+8H MOV CX,5 NEXT: MOV WORD PTR[BX],0 ADD BX.2 LOOP NEXT RET CODE ENDS END STARAT 2.从键盘上输入来宾的姓名Mr.×××或Mrs.×××,当按动任意键时,屏幕上显示出: "Welcome Mr.×××". 2.DESG SEGMENT MAXLEN DB 16 ACTLEN DB ? NAMES DB 16 DUP(‘ ‘) MESS1 DB ‘WELCOME’ MESS2 DB 16 DUP(‘ ‘) CRLF DB 0DH,0AH,’$’ DSEG ENDS CSEG SEGMENT MAIN PROC FAR ASSUME CS:CSEG,DS:DSEG,ES:DSEG PUSH DS SUB AX,AX PUSH AX MOV AX,DSEG MOV DS,AX MOV ES ,AX CLD BEGIN:MOV CX,16 MOV AL,20H LEA DI,MESS2 REP STOSB LEA DX,MAXLEN MOV AH,0AH INT 21H MOV AH,7 INT 21H CMP AL, 3 JE EXIT DISPLAY: MOV CH,0 MOV CL,ACTLEN LEA SI,NAMES LEA DI,MESS2 REP MOVSB MOV AH,09H LEA DX,MESS1 INT 21H EXIT:RET MAIN ENDP CSEG ENDS END MAIN 3.定义宏指令并展开宏调用: 宏指令JOE把一串信息“MESSAGE NO.K”存入数据区XK中. 宏调用I=0 JOE TEXT , I JOE TEXT ,I JOE TEXT ,I 3.JOE MACRO A,J MARY A,%J J=J+1 ENDM MARY MACRO X,K X&K DB ‘MESSAGE NO.&K’ ENDM 宏展开:I=0 JOE TEXT , I + TEXT0 DB ‘MESSAGE NO.0’ JOE TEXT , I + TEXT1 DB ‘MESSAGE NO.1’ JOE TEXT , I + TEXT2 DB ‘MESSAGE NO.2’ 4.在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一个完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首的数据区中。 DATA SECMENT BUF1 DW -56,24,54, -1,89, -8,…… BUF2 DW 45, -23,124, 345, -265,…… SUM DW 10 DUP(0) DATA ENDS 4.STACK1 SEGMENT PATA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATA MOV CX,10 LEA SI,BUF1 LEA DI,BUF2 LEA BX,SUM NXET: MOV AX,[SI] MOV DX,[DI] TEXT AX,8000H JE TDX NEG DX TDX:TEST DX,8000H NEG DX ADDS:ADD AX,DX MOV [BX],AX ADD SI,2 ADD DI,2 ADD BX,2 LOOP NEXT MOV AH,4CH INT 21H CODE ENDS END START 5. 改错. 阅读下列数据传送程序段,改正使用不当的语句 A DB 35,47,2AH,'XYZ' B DB N DUP(0) N EQU $-A MOV SI, A MOV DI, B MOV CX, LENGTH A LP: MOV AX, [SI] MOV [DI], AX INC SI INC DI DEC CX LOOP LP 6.内存中由SOURCE指示的个字节有符号数组成的数组分成正数和负数两个数组,并求这两个数 组的数据个数,结果存放在RESULT指示的内存区域。存放形式为正数个数在前,其后跟正数组元素,然后是负数个数及负数数组元素. 7从键盘输入一系列字符,以字符’$’为结束符,然后对其中的非数字字符计数,并显示出计数结果 . DSEG SEGMENT BUFF DB 50 DUP(‘ ‘) COUNT DW 0 DSEG ENDS ….. BEGIN:LEA BX,BUFF MOV COUNT , 0 INPUT:MOV AH,01 INT 21H MOV [BX] ,AL INC BX CMP AL ,’$’ JNZ INPUT LEA BX ,BUFF NEXT: MOV CL ,’$’ JZ DISP CMP CL,[BX] JZ DISP CMP CL,30H JB CONT CMP CL,39H JBE NXET CONT:INC COUNT JMP NEXT DISP: …….. 8.在STRING到STRING+99单元中存放着一个字符串,并编写一个程序,测试该字符串中是否存在数字.如有数字则把DL的第5位置1,否则将该位置0 .DSEG SEGMENT STRING DB 100 DUP(?) DSEG ENDS CSEG SEGMENT MAIN PROC FAR ASSUME CS:CSEG,DS:DSEG,ES:DSEG START: PUSH DS SUB AX,AX PUSH AX MOV AX,DSEG MOV DS,AX MOV ES,AX BEGIN: MOV CX,100 MOV SI ,0 REPEAT: MOV AL,STRING[SI] CMP AL,30H JB GOON CMP AL,39H JA GOON OR DL,20H JMP EXIT GOON:INC SI LOOP REPEAT AND DL,0DFH EXIT: RET MAIN ENDP CSEG ENDS END START 9.统计串中的空格个数和逗号的个数. .DATA SEGMENT STRN DB ‘Aabcd BE,RES,…’ ‘.’$’ SPCLN DB ? DELILN DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DSAX MOV OFFSETG STRN MOV DX,0 AGAIN:MOV AL,[SI] CMP AL,’$’ JE DONE CMP AL,20H JNE NEXT INC DH JMP CONTI NXET:CMP AL,2CH JNE CONTI INC DL COUNTI: INC SI JMP AGAIN DONE: MOV SPCLN ,DH MOV DELILN,DL MOV AH,4CH INT 21H CODE ENDS END START 10.编一程序段将BUF字节单元中的数折成高低四位,并且将分离出的高四位和低四位分别放于BUF+1和BUF+2字节单元的低四位上。 MOV AL.BUF MOV BUF+2,AL AND BUF+2,0FH MOV CL,4 SHR AL,CL M0V BUF+1,AL 11. . 用地址表转移表实现下列C语句,其中变量A和B是有符号的整型变量: switch(a%8) { case 0 :b=32 ; break; case 1: case2: b=b+43; break; case3: b=b*a; break; case4: b-- ; break; case5: case6: case7: printf("Function 5_6_7 "); break; } } 11.DATA SEGMENT A DW ? B DW ? Table DW case0,case12,case12,case3 DW case4,case567,case567,case567, MSG DB ‘Function 5_6_7$’ DATA ENDS CODE SEGMENT ... MOV AX,A MOV BX,AX AND BX,7 SHL BX,1 JMP Table[BX] Case0: MOV B,32D JMP NEXT CASE12: ADD AX,43D MOV B,AX JMP NWXT CASE3: SHL AX,1 MOV B,AX JMP NEXT CASE4: DEC B JMP NEXT CASE567:LEA DX,MSG MOV AH,9 INT 21H JMP NEXT NEXT:... CODE ENDS
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服