1、1汇编语言期末复习题DX:单项选择题 DU:多项选择题 TK:填空题 MC:名词解释 v JD:简答题 CXFX:程序分析题 CXTK:程序填空题 BC:编程题第 1章:基础知识1、在汇编语言程序的开发过程中使用宏功能的顺序是( C )。 DXA、宏定义,宏调用 B、宏定义,宏展开C、宏定义,宏调用,宏展开 D、宏定义,宏展开,宏调用2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是( B )。 DXA、名字项 B、操作项 C、操作数项 D、注释项3、可屏蔽中断就是它的请求是否被 CPU响应要受 ( IF )的控制。 DX4、使用 LINK连接命令,执行
2、后可生成文件的扩展名为( EXE ) 。 DX5、在寄存器间接寻址中,如果指令中指定的寄存器为 BP,则操作数在 堆栈 段中,段地址在 SS 寄存器中。 TK6、注释项用于说明程序段或是一条和几条指令的功能,一般用 ;(或分号) 表示注释的开始。 TK7、DOS 系统功能调用方式为:(1)置入口参数;(2)中断程序编号送 AH 寄存器后执行INT 21H。 TK8、通常主程序和子程序间参数传送的方法有三种: 用寄存器传递 、 用存储单元传递、用堆栈传递(顺序可调换)。 TK9、 中断 是 CPU暂停当前程序的执行,转而执行处理紧急事务的程序,并在该事务处理完后能自动恢复执行原先程序的过程。在此
3、,称引起紧急事务的事件为 中断源 。 TK10、在字符串操作指令中,DS SI 指向源串,ES DI 指向目的串。 TK11、计算机系统通过 接口 与外围设备通信。 TK12、键盘 I/O、显示 I/O和打印 I/O分别对应 16H 、 10H 和 17H 号中断。 TK13、字符显示模式缓冲区中的一个字对应于屏幕上的一个字符。每个字的第一个字节为显示字符的 ASCII 码 ,第二个字节为显示字符的 属性 。 TK14、简述上机运行汇编语言程序的过程。 JD答:首先打开未来汇编,新建一个空的汇编文件,后缀为.asm,然后输入汇编程序代码,保存,再编译成机器指令,然后连接成可执行文件,即 exe
4、文件,最后再运行。15、简述程序中指令和伪指令的区别。 JD答:能被计算机识别并执行的二进制代码,它规定了计算机能完成的某一操作。伪指令是对汇编起某种控制作用的特殊命令,其格式与通常的操作指令一样,并可加在汇编程序的任何地方,但它们并不产生机器指令。16、十六进制数 88H,可表示成下面几种形式,请找出错误的表示( ) 。 DX 无符号十进制数 136 带符号十进制数120 2 压缩型 BCD码十进制数 88 8 位二进制数8 的补码表示 17、指令指针寄存器是(IP ) 。 DX18、汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法(B) DXA名字的第一个字符可以是大写英文字母及
5、小写英文字母B名字的第一个字符可以是字母、数字及、_ C名字的有效长度31 个字符D在名字中不允许出现$19、CS 寄存器属于( 段寄存器 ) 。 DX20、已知物理地址(371F0H)=12H, (371F1H)=34H, (371F2H)=56H,如从地址 371F0H中取出一个字的内容是( 3412H ) 。 DX21、一个有 16个字的数据区,它的起始地址是 70A0HDDF6H,则这个数据区最末一个字单元的物理地址是( 7E814H ) 。 DX22、简述上机运行汇编语言程序的过程。 JD 答:首先打开未来汇编,新建一个空的汇编文件,后缀为.asm,然后输入汇编程序代码,保存,再编译
6、成机器指令,然后连接成可执行文件,即 exe文件,最后再运行。第 2章:8086/8088 的寻址方式和指令系统1、下列指令属于基址加变址寻址方式的是( MOV DX,DS:BPSI ) 。 DX2、当程序顺序执行时,每取一条指令语句,IP 指针增加的值是( D ) 。 DXA1 B2 C3 D由指令长度决定的3、下列属于合法的指令是( D ) DXAMOV DS,ES BMOV SI,DI CMOV AX,BL DMOV DI,BL4、若 AX=349DH,CX=000FH。则执行指令 AND AX,CX 后,AX 的值是( 000DH ) 。 DX5、设 DS=8225H,DI=3942H
7、,指令 NEG BYTE PTRDI操作数的物理地址是( 85B92H ) DX6、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是( B ) DXA、AX,BX,CX,DX B、BX,BP,SI,DI C、SP,IP,BP,DX D、CS,DS,ES,SS7、对寄存器 AX的内容乘以 4的正确指令序列是( SHL AX,1 SHL,AX,1 )。 DX8、执行 INC指令除对 SF、ZF 有影响外,还要影响的标志位是( OF,AF,PF )。 DX9、设 DH=10H,执行 NEG DH指令后,正确的结果是( DH=0F0H CF=1 )。 DX10、下列传送指令中有语法错误的是( A
8、 )。 DXA、MOV CS,AX B、MOV DS,AX C、MOV SS,AX D、MOV ES,AX11、下面指令执行后,改变 AL寄存器内容的指令是( D )。 DXA、TEST AL,02H B、OR AL,AL C、CMP AL,BL D、AND AL,BL12、执行除法指令后,影响的标志位是( AF,CF,OF,PF,SF,ZF 都不确定 )。 DX13、执行下面指令序列后,结果是( AX=0FF82H )。 DXMOV AL,82HCBW14、与 MOV BX,OFFSET VAR 指令完全等效的指令是( D )。 DXA、MOV BX,VAR B、LDS BX,VAR C、L
9、ES BX,VAR D、LEA BX,VAR315、在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是( PARA )。DX16、MOV SP,3210HPUSH AX 执行上述指令序列后,SP 寄存器的值是( 320EH )。 DX17、BUF DW 10H DUP(3 DUP(2,10H),3,5)上述语句汇编后,为变量 BUF分配的存储单元字节数是( 100H )。 DX18、MOV AH,7896HADD AL,AH上述指令执行后,标志位 CF和 OF的值是( CF=1,OF=0 ) 。 DX19、完成将带符号数 AX的内容除以 2的正确指令是( SHR AX,1 )
10、。 DX20、在汇编语言程序中,对 END语句的叙述正确的是( C ) 。 DXAEND 语句是一可执行语句 BEND 语句表示程序执行到此结束 CEND 语句表示源程序到此结束 DEND 语句在汇编后要产生机器码21、已知 BX=2000H,SI=1234H,则指令 MOV AX,BX+SI+2的源操作在(数据段中偏移量为 3236H的字节)中。 DX22、下面指令序列执行后完成的运算,正确的算术表达式应是(y=x2-1) 。 DXMOV AL,BYTE PTR XSHL AL,1DEC ALMOV BYTE PTR Y,AL 23、已知(AX)=1234H,执行下述三条指令后, (AX)=
11、 (0000H) 。 DXMOV BX,AXNEG BXADD AX,BXA1234H B0EDCCH C6DCCH D24、将 DX的内容除以 2,正确的指令是(C) 。 DX ADIV 2 BDIV DX,2 CSAR DX,1 DSHL DX,125、有如下指令序列: DXORG 40HDA1 DW 0AB12H,8574HMOV AX,DA1MOV BX,OFFSET DA1上述指令执行后,寄存器 AX和 BX的值分别为( AB12H,40H ) 。26、下列数值表达式和地址表达式中,错误的是( D ) 。 DXAMOV AL,8*14+4 BMOV SI,OFFSET BUF+13C
12、MOV CX,NUM2-NUM1 DMOV CX,NUM2+NUM127、数据段定义如下: DXX1 DB 10H,50,1X2 DW 10H,20,3X3 DD ?COUNT EQU X3-X1变量 COUNT的值是( 9 ) 。28、为使 CX=-1时,转至 MINUS而编制了一指令序列,其中错误的序列是( C )。 4DXA、INC CX JZ MINUS B、SUB CX,OFFFFH JZ MINUSC、AND CX,OFFFFH JZ MINUS D、XOR CX,OFFFFH JZ MINUS29、AL 和 VAR字节单元中分别存放一个带符号数,执行 CMP AL,VAR 时,如
13、 ALVAR,那么溢出位和符号位 的关系是( OF=SF )。 DX30、下面是关于汇编语言程序中使用 RET的描述,不正确的是( C )。 DXA每一个子程序中允许有多条 RET指令。 B每一个子程序结束之前一定要有一条RET指令。C每一个子程序中只允许有一条 RET指令。 D以过程形式表示的代码段,一定有 RET指令存在。31、在串操作指令前使用重复前缀指令 REPE,终止串的重复操作条件是( CX=0 或 ZF=0 ) 。 DX32、用 MOV指令将十进制 64以组合型 BCD码格式送入 AX,正确使用的指令是( MOV AX,0604H ) 。 DX33、重复前缀指令 REP的重复次数
14、由 CX 决定。 TK34、DR1 DB 10H,30HDR2 DW 10H DUP(0,2 DUP(2) )MOV BL,LENGTH DR1MOV CL,LENGTH DR2 请问指令执行后,BL 和 CL的值分别为 1 和 10H 。 TK35、设(SP)=100H,(AX)=0FFFFHSTCPUSH AXADC AX,0PUSH AXPOP BX 上述程序段运行后,(BX)= 0 ,(SP)= 0FEH 。 CXFX36、假设数据段定义如下: DA1 DW C, DDA2 DB 18 DUP(?)DA3 DW $DA2MOV BX,DA3MOV AX,DA1上述指令执行后,BX 寄存
15、器中的内容是 12H(或 18),AH 寄存器中的内容是 00H,AL 寄存器中的内容是 43H 。CXFX 37、现有如下数据段DATA SEGMENTARRAY1 DB 1,26, 3456ARRAY2 DW 7,89H,10VAL EQU ARRAY2-ARRAY1DATA ENDS5请问:该数据段已占有 12(或 0CH) 字节的存储空间。 CXFX38、当执行指令 ADD AX,BX 后,若 AX的内容为 2BA0H,设置的奇偶标志位 PF1,下面的叙述正确的是( ) 。 DX 表示结果中含 1的个数为偶数 表示结果中含 1的个数为奇数 表示该数为偶数 表示结果中低八位含 1的个数为
16、偶数 39、AND,OR,XOR,NOT 为四条逻辑运算指令,下面的解释正确的是( C ) DXA指令 XOR AX,AX 执行后,AX 内容不变,但设置了标志位B指令 OR DX,1000H 执行后,将 DX最高位置 1,其余各位置 0C指令 AND AX,OFH 执行后,分离出 AL低四位DNOT AX,执行后,将 AX清 040、完成对 CL寄存器的内容乘以 4的正确操作是( C ) DXAROL CL,1 BMUL 4ROL CL,1 CSHL CL,1 DMOV CL,2SHL CL,1 SHL CL,CL41、下面各传送指令中,正确的是( C ) DXAMOV DI,SI BMOV
17、DX+DI,AL CMOV WORD PTR BX,0100H DMOV AL,BX42、要实现使 BETA的值为 56,应采用语句为( BETA EQU 56 ) DX43、REPZ CMPSW 指令,重复执行的终止条件是( CX=0 或 ZF=0 ) DX44、下面程序段执行后,AL 中的内容是( 21H ) DXMOV AX,8833HADD AL,AHDAA45、完成将累加器 AL清零,并使进位标志 CF清零,下面错误的指令是( ) 。 DX MOV AL,00H AND AL,00H XOR AL,AL SUB AL,AL 46、下列指令执行后总是使 CF0,OF0 的是( AND)
18、 。 DX47、完成同指令 XCHG AX,BX 相同功能的指令或指令序列是( ) 。 DX MOV AX,BX MOV BX,AX PUSH AX POP BX MOV CX,AX MOV AX,BX MOV BX,CX 48、设 AH0,AL06H,BL09H,执行指令 ADD AL,BL AAA 之后,其结果应是(AH01,AL05 ) 。 DX49、设 AL0B4H,BL11H,指令“MUL BL”和指令“IMUL BL”分别执行后 OF,CF 的值为(OF1,CF1 ) 。 DX50、在串操作指令前使用重复前缀指令 REPE,终止串的重复操作条件是(CX0 或 ZF0 ) 。DX 5
19、1、下面指令中,合理而有意义的指令是( ) 。 DX REP LODSB REP SCASB REP CMPSB REP MOVSB 52、在下列串操作指令中,同时使用源串和目的串地址指针的指令是( D ) DX6ASTOSW BLODSW CSCASW DCMPSW53、AL=0AH,下列指令执行后能使 AL=05H的是( C ) DXANOT AL BAND AL,0FH CXOR AL,0FH DOR AL,0FH54、DA1 DWAB , CD, EF, GHMOV AX,DA1+3指令执行后 AX中的内容是( FC ) 。 DX55、在汇编语言程序中,对 END语句的叙述正确的是(
20、) 。 DX END 语句是一可执行语句 END 语句表示程序执行到此结束 END 语句表示源程序到此结束 END 语句在汇编后要产生机器码 56、下面的数据传送指令中,错误的操作是( ) 。 DX MOV SS:BX+DI,1000H MOV DX,1000H MOV WORD PTRBX,1000H MOV DS,2000H 57、下面指令执行后,变量 DAB中的内容是(0F5H ) 。 DXDAW DW2A05H DAB DB 0FAH : MOV AL,BYTE PRT DAW SUB DAB,AL 58、执行下列指令后,正确的结果是( ) 。 DXMOV AL,100 MOV BL,
21、2 AL100H BL02H AL64H BL0FEH AL64H BL82H AL100H BL0FEH 59、设数据段中已有: DA1 DB 12H,34H DA2 DW 56H,78H 下面有语法错误的语句是( ) 。 DX ADR1 DW DA1 MOV DA11,AX MOV BYTE PTR DA21,AL MOV WORD PTR DA11,AX 60、 DATA SEGMENT TA1 DW 0102H,0304H,0506H TA2 DB 02H,03H,04H : MOV BX,DS:0006H AND BX,0FFH AND BH,BX 上述指令序列运行后,BX 的内容是
22、( 0402H) 。 DX761、若 DS=0F3EH,SI=2000H,COUNT=0A8H,指令 MOV AX, (SI+COUNT)中,源操作数的有效地址 EA为_20A8H _,其物理地址为_11488H _。 TK62、如 JMP指令采用段间间接寻址,那么由 4个相邻字节单元中存放有转移地址,其中前两个字节存放的是_ IP_,而后两个字节存放的是_ CS_。 TK63、在串操作程序中,通常在重复前缀指令 REPZ或 REPNZ后,选用的串操作指令是_ STOS_或_ CMP_才有实际意义。 TK64、已知:BX=1357H,DI=2000H,DS=2000H,CS=4000H,分别指
23、出下面各指令中存储器操作数的物理地址。 JD(1)MOV AL,BX 21357H(2)MOV CS:BX+DI,AH43357H65、0P1 DB 1,20P2 DW 3412H,5678HMOV AX,OP1+1;字单元(OP1+1) AXMOV BL,OP2+1;字节单元(OP2+1) BL上述二条传送语句有语法错误,请根据注释字段的说明,将其改正。 JDMOV AX,WORD PTR(OP1+1)MOV BL,BYTE PTR(OP2+1)66、下列语句在存储器中分别为变量分配多少字节? JD(1)AD2 DW 10 DUP(?) ,10 22(2)AD3 DD 100 DUP(?)
24、40067、简述下面两条指令分别是什么语法错误? JDMOV BX,SIMOV AX,DLMOV指令不能在两个存储器操作数之间进行;操作数类型不匹配。68、在指令系统中,段内、段间返回均为 RET指令。试回答: JD(1)执行段内返回 RET指令时,执行的操作是:栈顶内容IP,SP+2SP (2)执行段间返回 RET指令时,执行的操作是:栈顶内容IP,SP+2SP 栈顶内容CS,SP+2SP 69、ARY DW 10 DUP(?)MOV AL,TYPE ARYMOV BL,LENGTH ARYMOV CL,SIZE ARY上述 MOV指令序列执行后的结果是什么? JD AL=2 BL=10 C
25、L=20 70、设某数据段: JD8DATA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB COMPUTERDB 0AH,0DHCOUNT EQU $-DA1DA2 DWCO,MP,UT,ERDATA ENDS试回答:(1)DA1 的偏移地址是: 20H (2)COUNT的值是 0AH (3)DA2+5字节单元的内容是 U的 ASCII码_71、已知AX=0FF60H,CF=1 MOV DX,96XOR DH,0FFHSBB AX,DX执行上述指令序列后,AX=_0_,CF=_0_。 CXFX72、设寄存器 AL,BL,CL 中内容均为 76H,XOR AL,
26、0FHAND BL,0FHOR CL,0FH执行上述指令序列后,AL=_79H _,BL=_06H _CL=_7FH_。 CXFX73、已知AX=0A33AH,DX=0F0F0HAND AH,DLXOR AL,DHNEG AHNOT AL执行上述指令序列后,AH=_60H_,AL=_35H_。 CXFX74、假定(DX)=10111001B, (CL)=0.3, (CF)=1,试确定下列各条指令单独执行后,DX中的值。 JD(1)SHR DX,1 (2)RCR DL,1 (3)RCL DX,CL 答:(1) 005CH (2) 00DCH (3) 05CCH 75、写出完成下述功能的程序段:
27、JD(1)传送 25H到 AL寄存器 (2)将 AL的内容乘以 2 (3)传送 15H到 BL寄存器(4)AL的内容乘以 BL的内容并请写出最后(AX)=?答:(1)MOV AL, 25H (2)SHL AL, 1 (3)MOV BL, 15H(4)MUL BL 最后,(AX)=612H =155476、写一程序段,求双字长数 DXbX 的相反数。 JD答: NEG DXNEG AXSBB DX, 0977、在某子程序的开始处要保护 AX,BX,CX,DX 四个寄存器信息,在子程序结束时要恢复这四个寄存器信息。例如: JDPUSH AX PUSH BX 保护现场 PUSH CX / PUSH
28、DX/ : 恢复现场 试写出恢复现场时的指令序列。 答:POP DX POP CX POP BX POP AX78、完成下列操作,选用什么指令: JD(1)将 AX的内容,减去 0520H,和上次运算的借位; (2)将变量名 TABL的段地址送AX; 答:(1)SBB AX,0520H(2 分) (2)MOV AX,SEG TABL(2 分) 79、D1 DB 20H DUP(?) D2 DW D1 请写出用一条指令实现取 D1的偏移地址=SI 中的三种方法。 JD答: LEA SI,D1 MOV SI,OFFSET D1 MOV SI,D2 80、A DW 1234H B DW 5678H
29、: PUSH A PUSH B POP A POP B 试回答: CXFX上述程序段执行后(A), (B)设执行前 SP200H,执行后 SP 答:(A)=5678H(2 分) (B)=1234H(2 分) SP=2000H(2 分) 81、现有下列程序段: CXFXMOV AX,6540H MOV DX,3210H MOV CL,04 SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL 试问上述程序段运行后, (AX)5400H (BL)06H(DX)2106H1082、分析下面程序段, CXFXMOV AL,200 SAR AL,1 MOV B
30、L,AL MOV CL,2 SAR AL,CL ADD AL,BL 试问程序段执行后(BL)0E4H(AL)0DDH 83、DA3 EQU WORD PTR DA4DA4 DB 0ABH,89HSHR DA3,1MOV DX,DA3SHL DA4,1MOV CX,DA3 上述程序段运行后,CX=_44AAH_,DX=_44D5H_。 CXFX84、设(SP)=100H,(AX)=0FFFFHSTCPUSH AXADC AX,0PUSH AXPOP BX 上述程序段运行后,(BX)= 0 ,(SP)= 0FEH 。 CXFX85、STRING DB ABCDEFGHIJ : MOV AH,01
31、;从键盘输入字符 19 INT 21H AND AL,0FH DEC AL XOR AH,AH MOV BX,OFFSET STRING ADD BX,AX MOV BL,BX MOV AH,02H ;显示输出 INT 21H : 试回答:(1)上述程序段的功能是什么? CXFX根据从键盘输入的字符19 ,确定在显示器上显示 STRING中第几个字符。(2)如从键盘输入字符4,程序段有什么结果? 显示器显示字符D86、已知:BX=4567HNEG BXINC BXNEG BX11DEC BX 程序段执行后,BX=_4565H_,CF=_1_。 CXFX87、已知数据段中定义DAT1 DB 12
32、H,34H,56H,78HMOV CX,0MOV AX,WORD PTR DAT1MOV CL,DAT1+3 当程序段执行完后 AX=_3412H_,CX=_0078H_。 CXFX88、DA1 DB 83H,72H,61H,94H,5AHMOV CX,WORD PTR DA1AND CX,0FHMOV AL,DA1+3SHL AL,CL 上述指令序列执行后, AL=_0A0H_,CL=_03H_。 CXFX89、现有如下程序段: CXFXDATA SEGMENT DA3 EQU 1234HORG 0020H DA4 EQU -DA2DA1 DW 12H,23H DA5 DB 31H,32HD
33、A2 DB 11H,21H DATA ENDS请回答:(1)该程序段已占有的存储字节数是多少?(2)符号名 DA4的值是多少?符号名 DA5的值是多少?答:(1) 该程序段已占有的存储字节数是 8个字节。(2) 符号名 DA4的值为 2,符号名 DA5的值是 0026H。90、执行下列程序段后,回答问题。 CXFXORG 1221H MOV BX,OFFSET NUMNUM DW 12H MOV CL,BYTE PTR NUM+1 MOV CH,TYPE NUMMOV AX,NUM HLT请问:(AX)=_, (BX)=_, (CX)=_。答:(AX)=0012H (BX)=1221H (CX
34、)=0200H91、执行下列指令后 AX、BX 寄存器的内容? CXFXMOV SI,10HMOV AX,1234HMOV SI+12H,AXLEA BX,SIMOV SI+14H,BX答:AX 为 1234H,BX 为 22HLES BX,DWORD PTR SI+12H92、试编制一程序段,用串操作指令实现以 DA_BY为首址的 20H个字节单元中存放相同字符Y (设 DA_BY存储区已有 ES指向) 。 BCLEA DI,DA_BYMOV CX,32MOV AL, YCLD12REP STOSB93、在 BUF1和 BUF2两个数据区中,各定义有 10个带符号字数据,试编制一完整的源程序
35、,求它们对应项的绝对值之和,并将和数存入以 SUM为首址的数据区中。 BCDATA SEGMENTBUF1 DW-56,24,54,-1,89,-8BUF2 DW45,-23,124,345,-265,SUM DW10DUP(0)DATA ENDS94、编制程序段实现:将 AX寄存器中的 16位二进制数分成四组,每组 4位,然后把这 4组数分别放在 AL、BL、CL、和 DL中。 BCMOV BH,ALMOV CH,AHMOV AL,AHAND AL,0F0HMOV BL,AHAND BL,0FHMOV CL,BHAND CL,0F0HMOV DL,BHAND DL,0FH95、在 NUMW单
36、元存放有一个 0-65535范围内的整数,将该数除以 500,商和余数分别存入QU1和 REM单元,请在空行处各填上一条指令完善该程序。 CXTKMOV AX,NUMW_ MOV BX,500_XOR DX,DXDIV BXMOV QUI,AX_ MOV REM,DX _96、已知数据段中定义DAT1 DB 12H,34H,56H,78HMOV CX,0MOV AX,WORD PTR DAT1MOV CL,DAT1+3 当程序段执行完后 AX=_3412H _,CX=_0078H _。 CXFX97、DA1 DB 83H,72H,61H,94H,5AHMOV CX,WORD PTR DA1AN
37、D CX,0FHMOV AL,DA1+3SHL AL,CL13上述指令序列执行后,AL=_0A0H _,CL=_03H _。 CXFX98、DA3 EQU WORD PTR DA4DA4 DB 0ABH,89HSHR DA3,1MOV DX,DA3SHL DA4,1MOV CX,DA3上述程序段运行后,CX=_44AAH _,DX=_44D5H _。 CXFX99、编制完整程序实现下列算式:W=X+Y+36-Z。设 X、Y、Z、W 均为双字长数据,各自的低十六位数和高十六位数分别存放在 X、X+2、Y、Y+2、Z、Z+2 的存储单元中,结果的低十六位字和高十六位字分别存放在 W和 W2 两个单
38、元中。 BCDATA SEGMENTX DD Y DD Z DD W DD DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX,XADD AX,YMOV BX,X+2ADC BX,Y+2ADD AX,36ADC BX,0SUB AX,ZSBB BX,Z+2MOV W,AXMOV W+2,BXCODE ENDSEND START第 3章:8086 汇编语言程序格式1、指令 JMP FAR PTR DONE属于(段间转移直接寻址) 。 DX2、下列叙述正确的是(C) 。 DXA对两个无符号数进行比较
39、采用 CMP指令,对两个有符号数比较用 CMPS指令B对两个无符号数进行比较采用 CMPS指令,对两个有符号数比较用 CMP指令C对无符号数条件转移采用 JAE/JNB指令,对有符号数条件转移用 JGE/JNL指令D对无符号数条件转移采用 JGE/JNL指令,对有符号数条件转移用 JAE/JNB指令143、一个有 128个字的数据区,它的起始地址为 12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是(12C59H) 。 DX4、某存储单元的物理地址是 12345H,可以作为它的段地址有( D ) DXA2345H B12345HC12340H D1234H5、在执行 DAA指令
40、,当高四位 BCD码校正时产生进位,如要把此进位值送入 AH中,对这进位值的操作应是(进位值在 CF中,校正后根据 CF内容再加在 AH中) DX6、执行后使 BX=0的同时也使 CF=0,OF=0 的指令是( XOR BX,BX ) DX7、在执行下列指令时,需要使用段寄存器 DS的指令是( D ) DXASTOSW BADD AL,CLCNEG BX DINC DABX8、无论 BH中原有的数是奇数或偶数,若要使 BH中的数一定为奇数,应执行的指令是( OR BH,01H ) DX9、比较两个带符号的数 A、B,当 A=B时程序转移,测试的条件为( ZF=1 ) DX10、使用 DOS系统
41、功能调用时,使用的软中断指令是( B ) DXAINT 21 BINT 10HCINT 16H DINT 21H11、十六进制数 0FFF8H表示的十进制正数为_+65528_,表示的十进制负数为_-32760_。TK12、CPU 的标志寄存器中标志位,可以分为两大类,其中一类称为_状态_标志位,另一类称为_控制_标志位。 TK13、当标志位_CF_=1 时表示无符号数运算产生溢出,而当标志位_ OF_=1是表示带符号数运算产生溢出。 TK14、在程序执行过程中,IP 寄存器中始终保存的是 (下一条指令的首地址) 。 DX15、PSW 寄存器中共有_6_位条件状态位,有_3_位控制状态位。 (
42、) 。 DX 16、串指令中的目的操作数地址是由_ ES:DI_提供。 17、8086CPU 在基址加变址的寻址方式中,变址寄存器可以为(SI 或 DI) 。 DX18、什么叫寻址方式?常用的寻址方式有哪些? JD答:寻址方式是指寻找指令中操作数所在地址的方法。 常用的寻址方式有:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、基址加变址、隐含寻址等。 第 4章:顺序程序设计1、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有( D )。A、CMP B、SUB C、AND D、MOV第 5章:分支程序设计1、检查二个无符号数的关系,若要实现 ALBL 时分支
43、去 LOP1处,那么在“CMP AL,BL”指令后应跟的分支指令是( JC LOP1 ) DX2、下面指令序列测试 BH中的数是否为奇数,若为奇数则转移至 K1处,横线处的指令应为15( ) 。 DXTEST BH,01H JNEK1 3、测试 BL寄存器内容是否与数据 4FH相等,若相等则转 NEXT处执行,可实现的方法是( ) 。 DX TEST BL,4FH JZ NEXT XOR BL,4FH JZ NEXT AND BL,4FH JZ NEXT OR BL,4FH JZ NEXT 4、当一个带符号数大于 0FBH时程序转移,需选用的条件转移指令是( JNLE) 。 DX 5、 MOV
44、 BL,64HMOV CL,03HXOR AX,AXAGAIN:ADD AL,BLADC AH,0DEC CLJNZ AGAIN问:(1)该程序段完成的功能是:将 AX内容乘 3送 BX中 CXFX(2)AX=_012CH_。6、 MOV DL,ALNOT DLTEST DL,04HJE NEXTNEXT:若上述程序段执行时产生分支,说明 AL中的数第几位一定为 1?程序段执行后 CF是多少? CXFX第 2位;CF=07、设 AX,BX 中的数一个为正数,一个为负数,下面程序段完成将正数送到 PLW单元中存放,请将程序中所缺指令语句补上。 CXTKTEST AX,8000H JE K1 或
45、JZ K1 MOV PLW,BX JMP DONE K1:MOV PLW,A DONE: 8、下面程序段是判断寄存器 AH和 AL中第 3位是相同,如相同,AH 置 0,否则 AH置全 1。试把空白处填上适当指令。 CXTK16_ XOR AH,AL_AND AH,08H_ JE ZERO_MOV AH,OFFHJMP NEXTZERO:MOV AH,0NEXT:9、以 BUF为首址的字节单元中,存放了 COUNT个无符号数,下面程序段是找出其中最大数并送入 MAX单元中。 CXTKBUF DB 5,6,7,58H,62,45H,127,COUNT EQU $-BUFMAX DB?MON BX
46、,OFFSET BUFMOV CX,COUNT-1MOV AL,BXLOP1:INC BX_ CMP AL,BX_ _JAE NEXTMOV AL,BXNEXT:DEC CX_ JNZ LOP1_MOV MAX,AL10、编程序段计算 SUMai=a1+a2+.+a20,已知 a1a20依次存放在以 BUF为首址,i=1的数据区,每个数据占两个字节,和数 SUM也为两个字节。 (要求用循环结构编写,循环控制采用计数控制) 。 (此题勿需书写源程序格式,只需把试题要求的有关指令序列书写出来。 ) CXMOV AX,0 MOV BX,OFFSET BUF MOV CX,20 LOP:ADD AX,BX I