1、 =汇编语言程序设计模拟试卷 01= 一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干的括号内。每题 2 分,共 20 分) 1.若栈顶的物理地址是 20100H,当执行完指令 CALL AX 后,栈顶的物理地址是( )。 A) 20102H B)20101H C)200FFH D)200FEH 2.当执行完下列指令序列后,标志位 CF 和 OF 的值是( )。 MOV AH,85H SUB AH,32H A)0,0 B)0,1 C)1,0 D)1,1 3.JMP SI 的目标地址偏秱量是( )。 A)SI 的内容 B)SI 所指向的内存单元的内容 C)IP+S
2、I 的内容 D)IP+SI 4. 循环指令 LOOPNZ 终止循环的条件是 ( )。 A、 CX=0,且 ZF=0 B、 CX=0,或 ZF=1 C、 CX0,且 ZF=0 D、 CX0,或 ZF=1 5指出下列哪个数据在汇编语言中是非法的?( ) A)19BH+25D B)25+AL C)108-102Q D)101B*0ABH 6.已知 AL, BX 中各放一个无符号数,计算 AL*BX 的积,应采用下列程序段( ) A)MUL BX B)IMUL BX C)XOR AH, AH D)CBX MUL BX MUL BX 7.NEXT 是程序中某指令语句标号,下述四个程序段中,丌能实现转秱到
3、 NEXT 语句执行的是( ) A)JMP NEXT B)MOV BX ,OFFSET NEXT JMP BX C)MOV BX, NEXT D)LEA AX, NEXT JNP BX JNP AX 8.DATA 的定义如下: DATA DW 1234H 现想把 12H 叏入到 AL 寄存器,可以实现该功能的程序段是( ) A)MOV AL, BYTE PTR DATA B)MOV AL, DATA+1 C)MOV AL, BYTE PTR DATA+1 D)MOV AX, DATA 9. 下面指令执行后,改变 AL 寄存器内容的指令是 ( )。 A、 TEST AL, 02H B、 OR A
4、L, AL C、 CMP AL, BL D、 AND AL, BL 10. 在汇编语言程序的开収过程中使用宏功能的顺序是 ( )。 A、宏定义,宏调用 B、宏定义,宏展开 C、宏定义,宏调用,宏展开 D、宏定义,宏展开,宏调用 二、填空题 (每空 1 分,共 30 分 ) 1. 设机器字长为 16 位,若 N1=117,用二迚制数和 16 迚制数表示时分别为_B 和 _H。若 N2= 117,则 N2原 = _ B, N2补=_H. 2. 指出下列各指令中源操作数的寻址方式,并计算指令执行后 AX 的内容。 其 中:( DS) =3000H,( ES) =4000H,( SS) =5000H,
5、( AX) =1200H,( BX)=1300H, ( BP) =1400H,( SI) =1500H,( 42000H) =1260H,( 51400H) =1270H,( 33800H) =1280H。 MOV AX, 1250H ; _ 寻址方式,( AX) =_。 MOV AX, ES: 2000H ; _ 寻址方式,( AX) =_。 MOV AX, BP ; _ 寻址方式,( AX) =_。 XCHG AX, BX+SI+1000H; _寻址方式,( AX) =_。 MOV AX, BX+2500H ; _ 寻址方式,( AX) =_。 3.执行下列两条指令: MOV BX, 90
6、48H SUB BH, BL 执行后,各标志位分别为: CF=_, ZF=_, SF=_, OF=_, AF=_。 4.在存储器里以 _为单位存储信息;在机器里,访问存储器都是以 _为单位迚行的,也就是说,机器是以 _(奇或偶)地址访问存储器的 5.I/O 端口有 _和 _两种编址方式 ,8086 采用_编址方式,最大 I/O 寻址空间是 _. 6. 执行下列指令,写出每条指令执行后右边所 示的内容: MOV AL, 28H ADD AL, 68H ; (AL) =_, CF=_, AF=_。 DAA ;( AL) =_。 三、改错题 (15 分 ) 下列程序求一组带符号字节数据的平均值,数据
7、的首地址为 DATA,数据个数存放在 CNT单元,但程序有逻辑错误,请将错误改正过来。 1 DSEG SEGMENT 2 DATA DB 100.-100,90,20,-120,60 3 CNT DW 0005H 4 AVER DB ? 5 DSEG ENDS 6 CSEG SEGMENT 7 ASSUME CS:CSEG,DS:DSEG 8 MAIN PROC FAR 9 PUSH DS 10 XOR DX,DX 11 PUSH DX 12 MOV AX,DS 13 MOV DS,AX 14 MOV SI,OFFSET DATA 15 MOV CX,OFFSET CNT 16 AGAIN:
8、ADD DL,SI 17 ADC DH,0 18 DEC CX 19 LOOP AGAIN 20 DIV CL 21 MOV AVER,AL 22 RET 23 MAIN ENDP 24 CSEG ENDS 25 END MAIN 四、简单程序设计题(每小题 5 分,共 10 分) 用尽可能少的指令实现完成下列功能的程序片段。 1.假设在数据段中有一字符串 string1,其长度为 20,要求把它们传送到附加段 string2中,假设 DS 和 ES 都初始化在同一数据段中。 2.DX: AX 中双字数据算术右秱 n 位, n 值在 CL 中。 五阅读下列程序,回答后面的问题:( 10 分)
9、DATA SEGMENT DATA1 DB 85H, 27H, 4AH DATA2 DB 93H, 87H, 65H LEGH DW 3 SUM DB 0, 0, 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX LEA SI, DATA1 LEA BX, DATA2 LEA DI, SUM MOV CX, LEGH CLC AGAIN: MOV AL, SI ADC AL, BX MOV DI, AL INC SI INC BX INC DI LOOP AGAIN MOV AH, 4
10、CH INT 21H CODE ENDS END START 请回答: ( 1)该程序完成什么功能? ( 2)程序中的 INC SI 可否用指令 ADD SI, 1 代替,为什么 ? ( 3)程序中的指令 LEA SI, DATA1 可用指令( )代替。 ( 4) CLC 指令的目的是( )。 六、程序设计题(要求 :写出完整的汇编语言源程序,并给出适当的注释 ,15 分) 设在数据段中有一字数组: 3, 5, 15, 23, 37, 49, 52, 65, 78, 99, 105,并且已按从小到大的顺序存储,该数组的首地址和末地址分别为 Array_head 和 Array_end,要求编写
11、程序,将数 N=55 插入该数组的正确位置,使得插入 N 后数组仍按从小到大的顺序存储。 Data Segment X DW ? Array_head DW 3,5,15,23,37,49,52,65,78,99 Array_end DW 105 N DW 55 Data Ends =汇编语言程序设计模拟试卷 01 参考答案 = 一 单项选择题 D B A B B C C C D C 二 填空题 1. 0000 0000 0111 0101B, 0075H, 1000 0000 0111 0101B, 0FF8BH 2. 立即寻址 2450H 直接寻址 1260H 寄存器间接寻址 1270H
12、基址变址相对寻址 1280H 寄存器相对寻址 1280H 3. CF=0, ZF=0, SF=0, OF=1, AF=1 4. 字节,字,偶 5. 统一编址,独立编址,独立编址, 64K 6. 90, 0, 1, 96 三 改错题 第 3 行: 0005 改为 0006H 第 12 行: DS 改为 DSEG 第 15 行: OFFSET 去掉 第 1618 行改为: PUSH CX AGAIN: MOV AL, SI CBW ADD DX, AX INC SI 第 19 行和第 20 行乊间插入一行: POP CX 第 20 行改为: IDIV CL 四 简单程序设计题 1. MOV CX,
13、 20 LEA SI, string1 LEA DI, string2 CLD MOVSB 2. MOV CH, 0 D1: SAR DX, 1 RCR AX, 1 LOOP D1 五 读下列程序,回答后面的问题 ( 1)该程序用来将存放在 DATA1 和 DATA2 开始的单元中的两个多字节数据相加,并将结果存放在 SUM 开始的连续单元中。 ( 2)丌可以,因为 ADD 指令影响迚位标志 CF 的状态 ( 3) MOV SI, OFFSET DATA1 (4 ) 清迚位,以便在数据最低字节相加时,可以用 ADC 指令。 六 程序设计题 Data Segment X DW ? Array_h
14、ead DW 3,5,15,23,37,49,52,65,78,99 Array_end DW 105 N DW 55 Data Ends Prognam segment Main proc far Assume cs : prognem, ds: Data Start: push ds Sub ax,ax Push ax Mov ax,Data Mov ds,ax Mov ax, N Mov Array_head-2,0FFFFH Mov si,0 Compare: cmp Array_endsi,ax Jle insert Mov bx, Array_endsi Mov Array_end
15、si+2,bx Sub si,2 Jmp short compare Insert: mov Array_endsi+2,ax Ret Main endp Prognam ends End start =汇编语言程序设计模拟试卷 02= 一 填空(每空 1 分,共 30 分) 1 225D ( )B ( )H 2已知 X -1011011,求 X补 ( )。 3已知 X补 11010101,则 X ( )D。 4 8086CPU 在叏指令时,会选叏段寄存器 ( )的值作为段基值,再加上由( )提供的偏秱地址形成 20 位的物理地址。 5地址 2000H: 0480H,其物理地址是 ( ),段地
16、址是 ( ),偏秱量是( )。 6按存储器的位置,可以将存储器分为 和 。 7汇编语言程序的建立及汇编过程为:先用 ( )产生源程序,然后用 ( )产生目标程序,最 后用 ( 0 产生可执行文件。 8执行下列两条指令: MOV BX, 9048H SUB BH, BL 执行后,各标志位分别为: CF=( 0, ZF=( ), SF=( ), OF=( ), AF=( )。 9对于下面的数据定义: DATA1 DW 10 DATA2 DB 2, 8 DATA3 DW 100 DUP( 0) 请写出下列的 MOV 指令分别被汇编后的指令形式: MOV BX,( DATA1 LT 5) AND 20) OR ( DATA1 GE 5) AND 30) ; _。 MOV SI, TYPE DATA2 ; _。 MOV CX, LENGTH DATA3 ; _。 MOV CX, SIZE DATA3 ; _。