资源描述
(0413)汇编语言复习思考题 一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干 的括号内。每小题1 分,共 20 分)1、设DS=8225H, DI=3942H,指令NEG BYTE PTRDI操作数的物理地址是()A、85B92HB、86192HC、BB690HD、12169H2、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是( )A、AX, BX, CX, DXB、BX, BP, SI, DIC、SP, IP, BP, DXD、CS, DS, ES, SS3、循环指令LOOPNZ终止循环的条件是()。A、CX=O,且 ZF=OB、CX=0,或 ZF=1C、CX=1,且 ZF=0D、CX=1,或 ZF=14、对寄存器AX的内容乘以4的正确指令序列是()。A、SHR AX, 1 SHR AX, 1B、SHL AX, 1 SHL AX, 1C、 ROL AX, 1 ROL AX, 1D、RCR AX, 1 RCR AX, 15、执行INC指令除对SF、ZF有影响外,还要影响的标志位是()。A、OF, AF, PFB、OF, AF, CFC、OF, PF, CFD、AF, PF, CF6、设DH=10H,执行NEG DH指令后,正确的结果是()。A、DH=10H CF=1B、DH=0F0H CF=0C、DH=10H CF=0D、DH=0F0H CF=17、下列传送指令中有语法错误的是( )。A、MOV CS, AXB、MOV DS, AXC、MOV SS, AXD、MOV ES, AX8、下面指令执行后,改变AL寄存器内容的指令是()。A、TEST AL, 02HB、OR AL, ALC、CMP AL, BLD、AND AL,BL9、执行除法指令后,影响的标志位是( )。A、CF,OFB、SF,ZFC、CF,OF,SFD、AF,CF,OF,PF,SF,ZF 都不确定10、执行下面指令序列后,结果是( )。MOV AL,82HCBWA、AX=0FF82HB、AX=8082HC、AX=0082HD、AX=0F82H11、与MOV BX, OFFSET VAR指令完全等效的指令是()。A、MOV BX, VARB、LDS BX, VARC、LES BX, VARD、LEA BX, VAR12、在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是( )。A、WORDB、PAGEC、BYTED、PARA13、MOV SP, 3210HPUSH AX执行上述指令序列后, SP 寄存器的值是( )。A、3211HB、320EHC、320FHD、3212H14、BUF DW 10H DUP(3 DUP(2, 10H), 3, 5)上述语句汇编后,为变量BUF分配的存储单元字节数是()。A、80HB、100HC、124D、19215、在汇编语言程序的开发过程中使用宏功能的顺序是( )。A、宏定义,宏调用B、宏定义,宏展开C、宏定义,宏调用,宏展开D、宏定义,宏展开,宏调用16、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可 省略的项是( )。A、名字项B、操作项C、操作数项D、注释项17、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有( )。A、CMPB、SUBC、ANDD、MOV18、为使CX=-1时,转至MINUS而编制了一指令序列,其中错误的序列是()。A、INC CX JZ MINUSB、SUB CX, OFFFFH JZ MINUSC、AND CX, OFFFFH JZ MINUSD、XOR CX, OFFFFH JZ MINUS19、AL和VAR字节单元中分别存放一个带符号数,执行CMP AL, VAR时,如ALVAR,那 么溢出位和符号位的关系是( )。A、OF=SFB、OF1SFC、OF=SF=1D、OF=SF=020、检查BUF的内容是否为正偶数,如是正偶数,则0TAL。下面程序段正确的是()。A、MOV AL, BUFJS K1SHR AL, 1JNC K1MOV AL, 0K1:B、MOV AL, BUFAND AL, 11JNZ K2MOV AL, 0K2:C、MOV AL, BUFTEST AL, 81HJNZ K3MOV AL, 0K3:D、MOV AL, BUFJNP K4TEST AL, 80HJNZ K4MOV AL, 0K4:二、简答题(每小题4分,共12分)1、在指令系统中,段内、段间返回均为RET指令。试回答:执行段内返回RET指令时,执行的操作是:执行段间返回RET指令时,执行的操作是:2. ARY DW 10 DUP(?)IIIMOV AL, TYPE ARYMOV BL, LENGTH ARYMOV CL, SIZE ARY上述MOV指令序列执行后的结果是什么?3. 设某数据段:DATA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB COMPUTERDB 0AH, 0DHCOUNT EQU $-DA1DA2 DWCO, MP, UT, ERDATA ENDS试回答: (1)DA1 的偏移地址是: (2)COUNT的值是DA2+5字节单元的内容是4. 8位无符号整数的表示范围为0255,写成16进制形式为00H; 8位有符号整数的表示范围为-128+127,写成16进制形式为。5. 8086/8088 分段管理存储空间,但每段容量最大不超过。6. 逻辑地址为 F000: 100 的存储单元,其物理地址是。7. 用来指示堆栈栈顶的偏移地址的是寄存器。8. 若要测试AL寄存器D4、D2、D0位是否都为0,则可使用指令语句(含操作数),以产生转移条件。这条指令执行后将利用标志位实现转移。9. 若定义:bdata db 2 dup(1,2,2dup,4),则dbata变量前5个单元从低地址到高地址的数据依次是。10假设varw是一个16位变量,则指令“ mov varw,ax”的目的操作数的寻址方式是11. 请指出下列指令错误原因:A. OR AX,CXB. ADD SI,BXDIC. JMP BYTE PTR LOOPSD. SAR AX, 4E. RCL DX12. A.下面两个语句有何区别?X1 EQU 1000HX2=1000HB. 下面的程序段有错吗?若有,请指出错误。CRAY PROCPUSH AXADD AX, BXRETENDP CRAY13. 假设程序中的数据定义如下:ARRAY1DW ?ARRAY2DB 16DUP(?)ARRAY3DD ?PLENTHEQU $-ARRAY1问 PLENTH 的值为多少? 它表示什么意义?14. 试根据以下要求,分别写出相应的汇编语言指令。A. 把 AX 寄存器和 BX 寄存器的内容相加,结果存入 AX 中。B. 用BX和SI的基址变址寻址方式,把存储器中的一个字节与DL的内容相加,并把结果送 回DL中。C. 把数OBEH与AH内容相加,结果送回AH中。D. 用SI和位移量0200H的寄存器相对寻址方式把存储器中的一个字与AX相加,并把结果 送回存储单元中。E. 用位移量0860H的直接寻址方式把存储器中一个字与数2EA0H相加,结果回送存储器中。三、程序分析题(每小题6分,共36分)1、已知 AX=0FF60H, CF=1MOV DX, 96XOR DH, 0FFHSBB AX, DX执行上述指令序列后, AX=, CF=2、设寄存器AL, BL,CL中内容均为76H,XOR AL, 0FHAND BL, 0FHOR CL, 0FH执行上述指令序列后, AL=BL=, CL=3、已知 AX=0A33AH, DX=0F0F0HAND AH, DLXOR AL, DHNEG AHNOT AL 执行上述指令序列后, AH=, AL=4、DATA SEGMENTS9 DB0, 1, 2, 3, 4, 5, 6, 7, 8, 9DATA ENDSIIILEA SI, S9LEA, DI, S9+1MOV CX, 5LOP: MOV AL, SIXCHG AL,DIMOV SI,ALADD SI,2ADD DI,2LOOP LOP上述程序段运行后,S9开始的10个字节存储单元内容是什么?5、MOV AL, 38HMOV BL, 49HCALL SUBOINC ALDEC CLIIISUBO PROCADD AL, BLMOV CL, ALDAARETSUBO ENDP上述程序段运行后, AL=, CL=6、DA3 EQU WORD PTR DA4DA4 DB 0ABH, 89HIIISHR DA3, 1MOV DX, DA3SHL DA4, 1MOV CX, DA3上述程序段运行后, CX=, DX=四、程序填空题(注意:下列各小题中,每空只能填一条指令!每小题6 分,共12分) 1、下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置全1。 试把空白处填上适当指令。AND AH, 08HMOV AH, OFFHJMP NEXTZERO:MOV AH, 0NEXT:2、以BUF为首址的字节单元中,存放了 COUNT个无符号数,下面程序段是找出其中最大 数并送入MAX单元中。BUF DB 5, 6, 7, 58H, 62, 45H, 127,COUNT EQU $-BUFMAX DB?MON BX, OFFSET BUFMOV CX,COUNT-1MOV AL,BXLOP1:INC BXJAE NEXTMOV AL,BXNEXT:DEC CXMOV MAX,AL五、编制程序题(第1小题6 分,第2 小题14 分,共20分)1. 编定程序段,用DOS的1号功能调用通过键盘输入一字符,并判断输入的字符。如字符 是Y,则转向YES程序段;如字符是N,则转向NO程序段;如是其他字符,则转向DOS 功能调用,重新输入字符。 (考生勿需写出源程序格式,只需写出与试题要求有关的指令序 列)(YES 和 NO 分别是两程序段入口处的标号)2. 在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序, 求它们对应项的绝对值之和,并将和数存入以SUM为首址的数据区中。DATA SEGMENTBUF1 DW-56, 24, 54, -1, 89, -8BUF2 DW45, -23, 124, 345, -265,SUM DW10DUP(0)DATA ENDS3. 按照如下要求各编写一段语句序列: 定义字节变量unpak,其中以非压缩BCD码形式存放十进制数1234; 写出指令,将一个字节数据58H输出到端口 43H; 将DX、BX、AX中的48位数右移1位。4. 已知数据段变量 datax、 datay、 dataz 定义如下:datax dw 5678h,89abhdatay dw 9ef0h,1234h dataz dw 2 dup (?)编写一个程序段,实现将datax和datay中双字数据相加,并存入dataz单元。5. 用一个程序段完成“REP MOVSW”指令的功能。6编写一个程序段,用空格符将字符区char-field填满,该字符区的字符数在count字节变量 中保存。7. 写一个子程序,将AX的内容以二进制的形式显示到屏幕上。8. 请编写一个完整的汇编语言源程序。要求如下: 数据段定义一个月份变量,存放数据112之间的月份;它对应12个月份的英文缩写, JAN、 FEB、 MAR、 APR、 MAY、 JUN、 JUL、 AUG、 SEP、 OCT、 NOV、 DEC。 主程序将月份传送给子程序。9. 己知宏指令为:shift macro rr, countmov ax, countif rr le 64mov cl, 3shr ax,clif rr lt 16mov cl,6shr ax,clendifendifendm宏调用为:shift 15, 7fffhshift 80, 9fffh写出宏扩展后的等效源程序段。10、编写完整程序,功能是把n个8个二进制数据转换成16进制字符数据。假定n个数据 存放在字节变量varb中,转换后的字符数据存放在hvarb中,提示0-9的字符码为30h-39h, a-f 的字符码为 41h-46h。(0413)汇编语言复习思考题答案一、单项选择题1.A5.A9.D13.B17.D2.B6.D10.A14.B18.C3.B7.A11.D15.C19.A4.B8.D12.D16.B20.C二、简答题 1.执行段内返回:栈顶内容一IP, SP+2-SP执行段间返回: 栈顶内容IP,SP+2SP 栈顶内容CS, SP+2SP2. AL=2BL=10CL=203. DA1 的偏移地址是 20HCOUNT的值是0AHDA2+5字节单元的内容是U的ASCII码4. 8位无符号整数的表示范围为0255,写成十六进制形式为00HFFH ,8位有符号 整数的表示范围为-128+127,写成十六进制形式为80H7FH 。5. 8086/8088 分段管理存储空间,但每段容量最大不超过 64KB 。6. 逻辑地址为 F000:100 的存储单元,其物理地址是 F0100H。7. 用来指示堆栈栈顶的偏移地址的是 SP 寄存器。8. 若要测试 AL 寄存器 D4、 D2、 D0 位是否都为 0,则可使用 test al,00010101b 指令语 句(含操作数),以产生转移条件。这条指令执行后将利用标志位 ZF 实现转移。9. 若定义:bdata db 2 dup(1,2,2dup,4),则dbata变量前5个单元从低地址到高地址的数据依次是 1,2,3,3,4。10. 假设varw是一个16位变量,则指令“mov varw,ax”的目的操作数的寻址方式是存储器 直接寻址方式。11. A.CX 不能作为间接寻址寄存器B. 加法指令不能完成存储单元之间的加法运算C. 转移指令中,转向标号地址的属性说明错D. 移位指令格式错,当移位次数大于1时,需用CL给出E. 指令中应指出移位次数12. A第一个语句中,X1不能多次赋值,而X2可以多次赋值 B.程序最后一行有错,应写成:CRAY ENDP13. 22它表示ARRAY1到ARRAY3所占存储单元的字节数14. A. ADD AX, BXB. ADD DL,BXSIC. ADD AH, OBEHD. ADD SI+0200H,AXE. ADD 0860H, 2EA0H三、程序分析题1. AX = 0 CF = O2. AL=79H BL=06H CL=7FH3. AH = 60H (3 分)AL=35H (3 分)4.S9 DB 1, 0, 3, 2, 5, 4, 7, 6, 9, 8 上述10个数据,错1个扣1分,扣完为止5. AL=88H CL=80H6. CX=44AAH (3 分)AL=44D5H (3 分)四、程序填空题1. (1) XOR AH, AL( 2) JE ZERO2. (1) CMP AL,BX( 2) JNZ LOP1五、编制程序题 1.参考答案KEY: MOV AH, 1INT 21HCMP AL,YJE YESCMP AL,NJE NOJMP KEY2. 参考答案 DATA SEGMENTBUF1 DW 56, 24, 54,1, 89,8,BUF2 DW 45,23, 124, 345,265,SUM DW 10 DUP( 0)DATA ENDSSTACK1 SEGMENT PARA STACKDW 20H DUP( 0)STACK1 ENDSCODE STGMENTASSUME CS: CODE, DS: DATA, SS: STACK1START: MOV AX, DATAMOV DS,AXMOV CX,10LEA SI,BUF1LEA DI,BUF2LEA BX,SUMNEXT:MOV AX,SIMOV DX,DITEST AX,8000HJE TDXNEG AXTDX:TEST DX,8000HJE ADDSNEG DXADDS:ADD AX,DXMOVBX,AXADD SI,2ADD DI,2ADD BX,2LOOP NEXTMOV AH,4CHINT 21HCODE ENDSEND START3. 定义字节变量unpak,其中以非压缩BCD码形式存放十进制数1234;unpak db 4,3,2,1 写出指令,将一个字节数据58H输出到端口 43H;mov al,58h out 43h,al 将DX、BX、AX中的48位数右移1位。shr dx,1rcr bx,1rcr ax,14. mov ax,dataxadd ax,datay mov da,datax+2 adc dx,datay+2 mov dataz,ax mov dataz+2,dx5. push axagain:mov ax,simov es:di,axadd si,2; sub si,2add di,2; sub di,2loop againpop ax6. mov cl,countmov ch,0mov di,offset char-field cld7. bdispagainbdisp8. stackstackdatamnummov al, rep stowb proc push ax push cx push dx mov cx,16 mov dx,0 shl ax,1 push ax adc dx,30h mov ah,2 int 21h pop ax loop again pop dx pop cx pop ax ret endp segment stack db 1024 dup(0) ends segment db 4;从高位到低位显示;转换为0或1的ASCII码;显示;堆栈段;数据段monthdb JAN,FEB,MARA,PR,MAY,JUNdb JUL,A UG,SEP,OCT,NOV,DEC dataendscodesegment code;代码段assume cs:code,ds:data,ss:stackstart:mov ax,data ;程序开始点mov ds,ax mov al,mnum call mschmov cx,3again:mov dl,bxmov ah,2int 21hinc bxloop againmov ax,4c00hint 21h ;程序结束 ;子程序:采用寄存器传递入口参数和出口参数 msch procpush sidec alxor ah,ahmov si,axshl ax,1add si,ax ;月份乘以 3 作为索引mov bx,monthsi ;因为每个英文缩写都是 3 个字符 pop si retmschendpcodeendsend start9、mov ax,7fffhmov cl,3shr ax,clmov cl,6shr ax,clmov ax,9fffh 10、data segmentvarb db 45, 36, 377q,。,11011011bn equ $-varbhvarb db 2 ndrp(?) data endsstack segment para stack “stack”db 256 dup(?)stack endscode segmentassume cs:cooe, ds:data, ss:stack main proc farpush dssub ax, axpush axmov ax, datamov ds, axmov dx, nlea di, hvarblea si, varb,置初值gocn:mov ah, simov al, ahand ah,0f0h mov cl,4 shr ah,cl cmp ah,9 jna next1 add ah,7 next1:add ah,30h,ah and al,dfh cmp al,9 jna next2 add al,7 next2:add al,30h,al mov di,ah mov di,al add di,2 inc si dec dx jnz goon ret main endp code ends end main
展开阅读全文