汇编语言试卷一、单项选择题(每小题1分,共20分)1.如某存储器一个段最多允许16K个字单元,那么表示一个段内偏移地址的二进制位数至少是(A)位。
A)15 B)16 C)17 D)182. 下列操作中允许超越的是( C )。
A)取指令B)存目的串C)以BP为基址存取操作数D)堆栈操作3.下面有语法错误的指令语句是( C )。
A)MOV AX,[BX][SI] B)MOV AX,—2[BX][DI] C)MOV AX,[BX][BP] D)MOV AX,—1[BX][SI]4.下列指令执行后能使BX中数据为奇数的是( B )。
A)XOR BX,01H B)OR BX,01H C)AND AX,01H D)TEST BX,01H5.设CL=05H,要获得CL=0AH,可选用的指令是(A)。
A)XOR CL,0FH B)NOT CL C)OR CL,0AH D)AND CL,0FH6.没有语法错误的输出指令是( B )。
A)OUT AX,30H B)OUT DX,AL C)OUT AL,DX D)OUT 30H,AH7.假设执行ADD指令后AX=6EH,再执行AAA指令,AX中的值是( B )。
A)14H B)0104H C)74H D)04H8.某数据段有如下语句:ORG 0435HDA1 DB 17H,44H,77HADR DW DA1下述语句能使AL中的数据为偶数的是( B )。
A)MOV AX,WORT PTR DA1 B)MOV AX,WORD PTR DA1[1] C)MOV AX,ADR D)MOV AX,BYTE PTR ADR 9.当执行条件转移指令JNS OPR 时,如条件成立,相对于转移指令的转移距离是( D )。
A)-128~+127个字节B)-126~+127个字节C)-128~+129个字节D)-126~+129个字节10.用MOV指令将十进制数89以非压缩BCD码格式送入AX,可使用的指令是( D )。
A)MOV AX,89 B)MOV AX,0809 C)MOV AX,89H D)MOV AX,0809H11.V AR1 EQU BYTE PTR V AR2V AR2 DW 0ABCDH┇SHL V AR1, 1SHR V AR2, 1上述两条指令执行后,V AR2字单元内容是(C)。
A)0ABCDH B)0AB9AH C)55CDH D)559AH12.设AX=0BBCCH,CF=1OR AX, 3CMCRCL AX, 1上述三条指令执行后,AX中的内容是( A)。
A)779FH B)779EH C)779DH D)7799H13.下列语句中能与“DA1 DB 32H, 34H”语句等效的是( A)。
A)MOV DAI,32H B)MOV DA1,34 MOV DA1+1,34H MOV DA1+1,32C)MOV WORD PTR DA1,3234H D)MOV WORD PTR DA1,‘’24‘’14.设SP=50H,执行段间返回指令‘’RET 8‘’后,寄存器SP的内容是(B )。
A)5AH B)5CH C)44H D)46H15.汇编语言语句格式中,对名字项的规定,请指出错误的解释( B )。
A)名字的第一个字符只可以是大小写英文字母及?、@、_等。
B)名字的第一个字符可以是大小写英文字母、数字、?、@、_等。
C)名字的有效长度≤31个字符。
D)名字从第二个字符起可以出现数字,但不允许出现$、#等字符。
16.使用DOS功能调用时,子程序编号应放在(A)寄存器中。
A)AH B)AL C)AX D)任意指定17.下列语句中能实现留空8个字节单元的语句是( D )。
A)DA1 DT ?B)DA2 DW ?,?C)DA3 DD ?D)DA4 DQ ?18.设BX的内容为0AA40H,执行SHR DX, 1 指令后的结果是(A)。
A)5520H B)5480H C)0D420H D)0D580H19. TEST DL,55HJE NEXT┇NEXT:﹍﹍┇上述程序段,执行JE 指令时能产生转移的情况是(D )。
A)DL﹥55H B)DL﹤55H C)DL=55H D)DL中第0、2、4、6位均为020.寄存器BX和DX中存放有32位二进制数,其中BX中放高16位。
下列程序段完成对32位数扩大4倍的功能,那么该程序段中方框里应填的语句是( C )。
MOV CX, 2LOP:SHL DX, 1LOOP LOPA)ROL BX, 1 B)ROR BX, 1 C)RCL BX, 1 D)RCR BX,1二、填空题(本大题共5小题,每小题1分,共5分)名词解释:请将各小题的叙述与下面的词语联系起来,括号内填入对应的a, b, c, d, e。
1.宏定义开始用的伪指令是( D )。
2.DF是程序状态字寄存器的(C )标志位。
3.对汇编语言源程序进行汇编时,使用的宏汇编程序文件名是(B )。
4.汇编语言程序中各语句的操作项可以是指令、伪指令或(A)的助记符。
5.CF是程序状态字寄存器中的( C )标志位。
词语:a) 宏指令b) MASM c) 状态d) MACRO e) 控制三、简答题(本大题共3小题,每小题2分,共6分)1.STRING DB ‘AB’,0,0,‘CD’,0,0,‘EF’,0,0请分别用DW、DD伪指令改写上述数据定义语句,要求改写后保持内存单元中内容不变。
①STRING DW ‘BA’,0,‘DC’,0,‘FE’,0 (l 分)②STRING DD ‘BA’,‘DC’,‘FE’ (1 分)2.执行:“NEG DX”指令时:①当DX=?时,CF=1②当DX=?时,OF=1①当DX=01~0FFFFH (或D X≠0)时,CF=1 (1 分)②当DX=8000H 时,OF=1 (l 分)3.设某数据段的段名为DA TA,段内有一变量BUF,请分别用MOV指令写出下述两条语句等效的语句。
①MOV AX,DA TA②LEA BX,BUF①MOV AX,SEG BUF (l 分)②MOV BX,OFFSET BUF (1 分)四、程序分析题(本大题共7小题,每小题5分,共35分)1.MOV AL,01HROR AL, 1OR AL,ALNEG AL上述程序执行后,AL= 80H ,CF= 1 。
2.A、B均是长度为10的字节数组,DS、ES已指向同一数据段:ADB1,2,3,4,5,6,7,8,9,0AHBDB0AH,9,8,7,6,5,4,3,2,1┇LEA SI, ALEA DI, BMOV CX, 10CLDLOP: LODSBXCHG AL, [DI]XCHG SI, DIDEC DISTOSBXCHG SI, DIINC DILOOP LOP上述程序段执行后, ①程序段完成什么功能?①程序段功能:交换A,B 两字节数组的内容②程序段执行后,A和B两个字节数组的内容分别是什么?A DB 0AH,9.8,7,6.5,4.3.2,1 (1 分)B DB 1,2,3,4、5.6,7,8.9,0AH (1 分)3.已知AL的值为0~F中的一位十六进制数:HECA PROC FARCMP AL,10JC KKADD AL,7KK:ADD AL,30HMOV DL,ALMOV AH, 2INT 21HRETHECA ENDP试回答:①该子程序完成什么功能?②如调用子程序时AL=3,子程序执行后,DL= 33H。
如调用子程序时AL=0FH,子程序执行后,DL= 46H 。
4.MOV AL,0FHXOR AL,0FFHMOV CL,7SHR AL,CL试回答:①上述程序段执行后,AL= 1 。
②如将指令SHR换成ROR指令后,那么程序段执行后,AL= 0E1H。
5.已知BX=5E5CH,CX=8303H,CF=1ROR BX,CLXOR BH,CHROL BX,CL程序段执行后,DX= 4658H,CF= 0 。
6.X DW 0123H,2A3EH,89DFHCOUNT EQU $—XY DB COUNT DUP(0)┇LEA SI,XLEA DI,YMOV CX,COUNTCLDREP MOVSB试回答:①上述程序段执行后,Y数据区各字节单元中的内容是什么?①Y DB 23H,01,3EH,2AH,0DFI-l,89H (3 分)②程序段功能不变情况下,REP MOVSB 指令可否用下面两条指令替代:可以LOP:MOVSBLOOP LOP7.MOV AX,0E0EHMOV BX,AXSHR BX, 1CWDDIV BXXCHG BX,AXMUL BX上述程序段运行结束后,AX= 0E0EH,BX= 2 。
五、程序填空题(本大题共2小题,每小题6分,共12分)1.下面程序段是完成用单个字符输入的1号功能调用,从键盘输入10个字符,然后再用单个字符显示输出的2号功能调用,并以相反顺序显示输出这10个字符。
试把空白处填上适当的指令。
MOV CX,10LOP1:MOV AH,01HINT 21HPUSH AXLOOP LOP1MOV CX,10LOP2:POP DXMOV AH,02HINT 21HLOOP LOP22.下面程序段实现将BUFF为首地址的内存区域,全部存储0FFH数据。
试把空白处填上适当的指令。
BUFF DB 20H DUP(?)┇LEA Dl,BUFFMOV AX,0FFFFHMOV CX,20HSHR CX,1REP STOSW六、编制程序(本大题共3小题,共22分)1.试编写一程序段,实现32位有符号数除4。
MOV CX,2LOP:SAR M+2.1RCR M,lLOOP LOP2.试用两条指令对寄存器CH和CL分别减1,且CL中减1的借位从CH中获得,而CH 中减1的借位从CL中获得。
SUB CX,0101HSBB CL,03.设数据段中有三个无符号数,分别存放在DA T,DA T+1,DA T+2字节单元中,试编一完整的源程序,找出三个数中数值大小居中的一个,并将其存入BUF字节单元中。
DA T DB ××, ××, ××BUF DB ?DATA SEGMENTDAT DB ××,××, ××BUF DB ?DATA ENDSSTACKl SEGMENT PARA STACKD B 20H DUP (0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,DATMOV BL,DAT+1MOV CL,DAT+2CMP AL,BLJB LP1XCHG AL,BLLP1: CMP AL,CLJAE SAVXCHG AL,CLCMP AL,BLJB SAVXCHG AL,BLSAV: MOV BUF,ALMOV AH,4CHINT 21HCODE ENDSEND START。