《刘臣奇主编-汇编语言程序设计-课外练习题参考答案.pdf》由会员分享,可在线阅读,更多相关《刘臣奇主编-汇编语言程序设计-课外练习题参考答案.pdf(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一章课外练习题一、单项选择题:1从键盘输入的字符,在计算机内存储的是它的(A)(A)二进制编码(B)四进制编码(C)八进制编码(D)十六进制编码2 6 位无符号二进制数能表示的最大十进制数是(B)。(A)64(B)63(C)32(D)31 3十进制数269 变换为十六进制数是(C)。(A)10B(B)10C(C)10D(D)10E 4 8 位的微型计算机系统是以16 位来表示地址,则该微机系统有(C)个地址空间。(A)255(B)65535(C)65536(D)1048576 5 8 位有符号二进制数能表示的最大十进制数是(D)。(A)256(B)255(C)128(D)127 6十六进制数
2、88H,可表示成下面几种形式,请找出错误的表示(D)。(A)无符号十进制数136(B)带符号十进制数120(C)压缩型BCD 十进制数 88(D)8 位二进制数 8 的补码表示7有一个数值152,它与十六进制数6A 相等,那么该数值是(B)。(A)二进制数(B)八进制数(C)十进制数(D)四进制数8 7 位 ASCII 总共可表示(C)个符号。(A)256(B)127(C)128(D)255 9 4B 的字长是(C)。(A)8 位(B)16 位(C)32 位(D)64 位二、判断题(判断每题正误,对的在题后括号内划“”,错的划“”)1字节通常用英文单词“Bit”来表示()。2目前广泛使用的Pe
3、ntium 计算机其字长为5 个字节()。3存储器中将8 个相邻的二进制位作为一个单位,这种单位称为字节()。4微型计算机的字长并不一定是字节的整数倍()。三、填空题1 8 位有/无符号整数的表示范围写成16 进制形式为(807F)/(00FF)。2 己知:计算机中有一个“01100001”编码,如果把它看作是无符号数,它是十进制什么数(97);如果认为它是BCD,则表示(01100001)BCD;认为它是某个ASCII,则代表(a)字符。3若 X 补=X,则 X 为(非负数)。4(00101011)B+(13)D+(1B)H=(123)Q 5已知:A=10001011,B=11011010,
4、求 A B=(10001010);A B=(11011011)。6已知:X=+0010011B,Y=-0111100B,试用补码完成真值(X+Y)=(11010111);(X-Y)=(01001111)。7十进制数的(731)=(011100110001)BCD。8(011100110001)BCD=(731)十进制数。9将一个09 之间的数据转换为ASCII 需加(30H)。10大写英文字母转换为小写英文字母需加(20H)。11英文字母“A”“F”转换为十六进制数值AF 需要减(37H)。四、简答题1什么是汇编语言?为什么要学习汇编语言?答:汇编语言是机器语言的符号表示形式。它不仅是计算机原
5、理、操作系统等课程的必要先修课,而且对于训练学生掌握计算机工作原理、程序设计技术、熟练上机操作和程序调试技术都有重要作用。3把下列二进制数转换成十进制数。1101.01=13.25111001.00011=57.9375 111.001=7.1251010.1=10.55把下列十六进制数转换成十进制数。A6.DC=166.9AC.BD=2476.B4A.8D=2890.1AC.0A=428.6把下列英文单词转换成ASCII 编码的字符串。Water=5761746572 Great=4772656174 Good=476F6F64After=41667465727回车键、空格键的ASCII代码
6、及其功能是什么?答:0DH、20H。字符从头开始、空一个字符的位置。第二章课外练习题一、单项选择题:1下列四个寄存器中,哪个寄存器在程序设计中是不可省略的(A)。(A)CS(B)DS(C)ES(D)SS 2指令 MOV AX,10SI 的源操作数字段的寻址方式是(C)。(A)寄存器寻址(B)寄存器间址(C)变址寻址(D)基址寻址3 80868088 CPU 中可用作寄存器间址的寄存器是(B)。(A)BX、SI、DI(B)BX、BP、SI、DI(C)BX、IP、SI、DI (D)BX,DX,SI,DI 4指令 MOV 100SIBP,AX 目标操作数的隐含段为(B)。(A)数据段(B)堆栈段(C
7、)代码段(D)附加段二、判断题(判断每题正误,对的在题后括号内划“”,错的划“”)1 当 SP,BP,SI,DI 用于指针和变址寄存器使用时;SP 中所含的偏移地址是堆栈段中的偏移地址。()BP、SI、DI 所含的偏移地址是数据段中的偏移地址。()2 奇偶标志位PF,当运算结果的低8 位中有偶数个1 时,被置为0。()3 零标志位ZF,当运算结果为0 时,被置为0。()4 符号标志位SF,在运算结果为负时被置为1。()三、填空题1在 8086/8088CPU 中,有许多寄存器,他们是通用寄存器:(AX)(BX)(CX)(DX);指针和变址寄存器:(SP)(BP)(SI)(DI);段寄存器:(C
8、S)(DS)(SS)(ES);指令指针:(IP)还有一个标志寄存器:(PSW),他们都是(16)位的。2 IBM PC 机内存容量最大为(1M)B,要寻找这样大的空间,需要(20)根地址线。3每个逻辑段的最大长度为(64KB)。4在 IBM PC 机中,有 4 个专门存放段地址的寄存器,称为段寄存器,请写出以下段寄存器的符号:代码段寄存器:(CS)数据段寄存器:(DS)堆栈段寄存器:(SS)附加段寄存器:(ES)四、简答题1 IBM PC 的存储器为什么采用分段结构?答:是因为要寻找20 位存储器地址的需要。使用两个十六进制的寄存器做一个寻找20位寄存器工作的一种方法。2什么是逻辑地址?什么是
9、物理地址?如何由逻辑地址计算物理地址?答:逻辑地址是由两部分组成的,即段的基地址和偏移地址。程序员在编写程序时使用的都是逻辑地址。物理地址就是内存单元中的一个惟一的20 位二进制数表示的地址,物理地址的范围是从00000H 到 FFFFFH。CPU 与存储器进行数据交换时所使用的地址就是物理地址。物理地址=段地址 16D+偏移地址。3如果在一个程序段开始执行之前,CS=0A7F0H,IP=2B40H,试问该程序段的第一个字的物理地址是多少?答:物理地址=段地址 16D+偏移地址=0A7F0H 16D+2B40H=0AAA00H4一个有 16 个字的数据区,它的起始地址为70A0:DDF6,那么
10、该数据区的最后一个字单元地址是多少?答:=DDF6H+20H-2H(16 个字=32 个字节=20H 个字节)=DE14 即 70A0:DE145哪些寄存器可以用来指示存储器地址?答:BX、BP、SI 和 DI。6有一个由20 个字组成的存储区,其起始处段地址为4701H,偏移地址为2012H。试写出该存储区首单元和末单元的物理地址。答:该存储区末单元的偏移地址=2012H+28H-2(20 个字=40 个字节=28H 个字节)=2038H。即首单元和末单元的物理地址为49022H 和 49048H。7 8086 微处理器由哪几部分组成?各部分的功能是什么?答:8086 8088 微处理器由两
11、大部分组成:总线接口单元BIU 和执行单元EU。BIU:负责与存储器接口,即CPU 与存储器之间的信息传送。即:BIU 从内存的指定部分取出指令,送至指令队列排队。从内存的指定部分取出执行指令时所需的操作数,送至EU 部分。EU:负责指令的执行。8简述 8086 CPU 的寄存器组织。答:8086 8088CPU 的寄存器是由通用寄存器控制寄存器段寄存器组成。9试述 8086 CPU 标志寄存器各位的含义与作用。答:它含有 9 个有用的标志位(其余7 位不用),用于记录指令操作后的结果状态信息或控制处理器操作的标志。其含义与作用如下:进位标志C(Carry Flag)当加减运算操作后,结果的最
12、高位产生一个进位或借位,则C=1,否则 C=0。各种移位指令,逻辑操作指令等也可影响CF 的状态。CF 位也可表示无符号数的溢出。溢出标志O(Overflow Flag)在算术运算中,带符号数的运算结果超出机器所能表示的数据范围称为溢出,当溢出发生时,则O=1,否则 O=0。带符号数的数据范围。8 位运算时为:128 +127;16 位:32768 +32767。符号标志S(Sign Flag)若运算结果的最高位(D15 或 D7)为 1,则 S=1,否则S=0。零标志 Z(Zero Flag)若运算的结果为0,则 Z=1,否则 Z=0。奇偶标志P(Parity Flag)若运算结果中1的个数
13、为偶数,则P=1,否则 P=0。辅助进位标志A(Auxitiary Carry Flag)记录运算时第3 位(半个字节)产生的进位值,若第 3 位产生进位,则A=1,否则 A=0。在执行BCD 调整时使用此标志。方向标志DF(Direction Flag)用于在串处理指令中控制处理信息的方向。当 DF=1 时,每次操作后使变址寄存器SI 和 DI 减小,这样就使得串处理操作从高地址向低地址方向处理。当 DF=0 时,则使 SI 和 DI 增大,使得串处理从低地址向高地址方向处理。中断标志IF(Interrupt Flag)当 IF=1 时,允许CPU 响应可屏蔽中断请求,否则关闭中断。陷阱标志
14、TF(Trap Flag)又称单步跟踪。用于调试时的单步方式操作。当TF=1 时,每条指令执行完后产生陷阱,由系统控制计算机;当TF=0 时,CPU 正常工作,不产生陷阱。10指出下列MOV 指令的源操作数的寻址方式。MOV AX,1234H=立即MOV AX,BX =寄存器MOV AX,BX=寄存器间接MOV AX,TABLE;TABLE 是一个变量名=直接MOV AX,1234H =直接MOV AX,BX+1234H=基址MOV AX,BPSI=基址变址MOV AX,BX+SI-1234H=基址变址11设(DS)=2000H,(BX)=0100H,(SS)=1000H,(BP)=0010H
15、,TABLE 的物理地址为2000AH,(SI)=0002H。求下列每条指令源操作数的存储单元地址。MOV AX,1234H MOV AX,BX MOV AX,TABLEBX MOV AX,BP MOV AX,BPSI 12已知:BX=1234H,BP=5678H,SI=1357H,DS=0925H,SS=0468H,CS=4B10H,指出下述指令中存储器操作数的有效地址和实际地址。有效地址实际地址MOV AL,BX 1234H 0A484H MOV AH,BP 5678H 0ACF8H MOV BH,CS:SI 1357H 4C457H MOV DL,SI+10H 1367H 0A5B7H
16、MOV CH,BP+20H 5698H 09D18H MOV CL,SS:SI+50H 13A7H 05A27H MOV BL,DS:BP+30H 56A8H 0E8F8H MOV BP+SI+30H,AH 68DCH 0B07FH MOV BX+SI-40H,AH 254BH 0B79BH MOV CS:BX+SI,DH 258BH 4D68BH 13有两个16 位字 1EE5H 和 2A3CH 分别存放在80 x86 微机存储器的000B0H 和 000B3H 单元中。请用图表示出它们在存储器里的存放情况。地址内容000B0H E5H 000B1H 1EH 000B2H 000B3H 3C
17、H 000B4H 2AH 14有关寄存器及存储单元的内容如下:DS=2000H,BX=0100H,SI=0002H,存储单元的内容见习题14 示意图。试说明下列各条指令执行后AX 寄存器的内容。MOV AX,1200H MOV AX,BX MOV AX,1200H MOV AX,BX MOV AX,1100BX MOV AX,BXSI MOV AX,1100BXSI 地址内容20100 12H 20101 34H 20102 56H 20103 78H 21200 2AH 21201 4CH 21202 0B7H 21203 65H 习题 14 示意图=21234H=20100H=2010AH
18、=10010H=10012H=1200H=0100H=4C2AH=3412H=4C2AH=7856H=65B7H 第三章课外练习题一、单项选择题:1以下语句汇编后,CENTH 的值是(A)。BUF1 DW 8,19 BUF2 DB 6,ABC$,10 DUP(5)CENTH EQU BUF2 BUF1(A)4(B)8(C)14 (D)17 2在 DEBUG 环境下查看机器指令使用(B)命令;显示内存数据使用(E)命令。(A)G(B)U(C)T(D)A(E)D(F)E(G)R 二、填空题:1写出下列各语句在存储器中分别为变量分配多少字节,并填入括号内。DATA SEGMENT NUM1 DW 2
19、0(2)NUM2 DB 31H,32H,33H(11)NUM3 EQU 10H (0)NUM4 DB NUM3 DUP(0)(10H)DATA ENDS 2某程序的数据段定义如下:DATASG SEGMENT PARTLIST DBPARTDB 60 DB PRICEDB 0125 DB DESCRIPTION DB RADIO LISTLENG EQU($-PARTLIST);数组长度,用表达式表示DATASG ENDS 3有符号定义语句如下:BUFF DB 1,2,3,123EBUFF DB 0 L EQU EBUFF-BUFF 问 L 的值是(6)。4下边是汇编语言程序上机步骤,请填写出
20、完成各步骤使用的系统程序的文件名字,并按照正确步骤给出操作顺序号。操作名称文件名操作顺序汇编(MASM)(2)编辑(EDIT)(1)连接(LINK)(3)调试(DEBUG)(4)5自内存 0F00:0006 开始的内存单元中存放着80 32 56 98 76 B5 这六个十六进制数据,试分别写出 0F00:0008 的字节型数据,字型数据、双字型数据的值。字节型:(56)字型:(9856)双字型:(B5769856)6对于如下所示的数据定义,各指令语句的执行结果是什么(以十六进制数表示)?VR1 DB-38,456,?VR2 DW 6,5 DUP(2)MOV AL,VR1(-38)ADD VR
21、2,59 (65)MOV BL,VR1+2(53)7对于第6 小题,为VR1 变量分配了(5)个字节,为VR2 变量分配了(12)个字节。8汇编源程序的文件扩展名是(.ASM)。9以下语句汇编后,COUNT 的值是(9)。BUF1 DB 3,5,ABCD$BUF2 DW 0FABH COUNT EQU$-BUF1 10保存当前栈顶地址的寄存器是(SP)。11在程序运行时执行的语句是(指令)语句,它告诉CPU 要执行的操作。12(伪指令)语句是由汇编程序在汇编过程中执行的语句。三、判断题(判断每题正误,正确的在题后括号内划“”,错误的划“”)1汇编语言是用指令的助记符、符号地址、标号等符号书写程
22、序的语言。()2通过 ASSUME 伪指令给段寄存器赋初值。()3在汇编语言中当缺省为十进制数时,表示十六进制数要用H 结尾。()4在 DEBUG 中,缺省值为十进制数。()5在标志IF=0 时,CPU 忽略所有的中断请求。()四、简答1标号具有哪3 种属性?该3 种属性的属性值分别表示什么?答:标号具有三种属性:段、偏移和类型属性。段属性:定义标号的段起始地址,此值必须在一个段寄存器中,而标号的段则总是在CS 寄存器中。段属性值可以用SEG 算符求得。偏移属性:标号的偏移地址是从段起始地址到定义标号的位置之间的字节数。标号偏移量属性值可由 OFFSET 算符求得。类型属性:类型属性用来指出该
23、标号是在本段内引用还是在其他段中引用的。标号类型值可用TYPE 算符求得。第四章课外练习题一、单项选择题:1若栈顶的物理地址为20100H,当执行完指令PUSH AX 后,栈顶的物理地址为(D)。(A)20102H(B)20101H(C)200FFH(D)200FEH 2下列指令执行后,DAB 中第一个字的内容是(B)。DAB DB 0FAH,0DAH,0F5H,0D0H,5H DAB_L EQU$-DAB MOV AL,DAB_L XCHG DAB,AL(A)05DAH(B)0DA05H(C)0F5DAH(D)0DAF5H 3执行下列指令后,正确的结果是(B)。MOV AL,100 MOV
24、BL,-2(A)AL=100H,BL=02H(B)AL=64H,BL=0FEH(C)AL=64H,BL=82H(D)AL=100H,BL=0FEH 4完成同指令XCHG AX,BX 相同功能的指令或指令序列是(D)。(A)MOV AX,BX (B)MOV BX,AX(C)PUSH AX(D)MOV CX,AX POP BX MOV AX,BX MOV BX,CX 5为了使MOV AX,VAR 指令执行后,AX 寄存器中的内容为4142H,下面哪一条数据定义会产生不正确的结果?(C)(A)VAR DW 4142H(B)VARDW 16706(C)VAR DB 42H,41H(D)VAR DW A
25、B 6假定用伪指令DATADB 12H,34H 定义了两个字节数据,现需要将数据12H 取入寄存器AL,将数据34H 取入寄存器AH,能完成此功能的程序段是(D)。(A)MOV AX,DATA(B)MOV SI,DATA MOV AX,SI(C)LEA SI,DATA(D)MOV SI,OFFSET DATA MOV AX,SI MOV AL,SI MOV AH,SI MOV AH,SI+1 7 POP 指令的操作数不能是(D)。(A)BP (B)BX(C)字变量的SUM(D)CS 二、简答题1设 ARRAY 是字数组的首地址,写出将第5 个字元素取出送AX 寄存器的指令序列,要求使用以下几种
26、寻址方式:直接寻址;(MOV AX,ARRAY+8)寄存器间接寻址;(LEA BX,ARRAY+8 和 MOV AX,BX)变址寻址;(MOV SI,8 和 MOV AX,ARRAYSI)基址变址寻址。(LEA BX,ARRAY 及 MOV SI,8 和 MOV AX,BXSI)2设有以下程序段,求执行完此程序段后AL 寄存器中的内容。(12H)ABC EQU 2 DATA1 DB 20H DATA2 DW 1234H MOV AL,DATA1+ABC 3下列每组指令有何区别?MOV AX,1234H AX 1234HMOV AX,1234H AX 1234H 的地址MOV AX,TABLEA
27、X TABLE 的数据MOV AX,TABLEAX TABLE 的地址MOV AX,TABLE AX TABLE 的数据LEA AX,TALBE AX TABLE 的地址MOV AX,BXAX BX 的内容MOV AX,BXAX BX 的地址4写一指令序列,将3456H 装入 DS 寄存器。MOV AX,3456H MOV DS,AX 5不可以从堆栈向哪个段寄存器弹出数据?答:CS6若(SS)=2000H,(SP)=000AH,先执行将字数据1234H 和 5678H 压入堆栈的操作,再执行弹出一个字数据的操作,试画出堆栈区及SP 的内容变化过程示意图(标出存储单元的物理地址)。内容堆栈地址内
28、容堆栈地址内容堆栈地址20006H 执行后 SP78H 20006H 78H 20006H 20007H 56H 20007H 56H 20007H 20008H 34H 20008H 最后 SP34H 20008H 20009H 12H 20009H 12H 20009H 执行前 SP2000AH 2000AH 2000AH 7在 8086 8088 微处理器中,PUSH 和 POP 指令在堆栈与寄存器或存储单元之间传送数据时,一次总是传送多少字节?答:2字节。8解释 XLA T 指令是怎样转换AL 寄存器中的内容的。并编写一段程序用XLAT 指令将BCD 码的 09 转换成对应的ASCII
29、,并将 ASCII 存入数组ARRAY 中。答:XLAT 指令是通过AL 寄存器加上BX 寄存器联合组成的寻址方式找到目标地址后,将内容传送到 AL 寄存器中。程序如下:MODEL SMALL STACK DATA BCD DB -7 BCD2ASCT AB DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H ARRAY DB?CODE STARTUP MOV AL,BCD LEA BX,BCD2ASCTAB XLAT MOV ARRAY,AL EXIT 0END9下列 ASCII 字符串(包括空格符)依次存储在首地址为CSTRING 的字节单元中:CSTRI
30、NG DB BASED ADDRESSING 请编写指令将字符串中的第一个和第七个字符传送给DX 寄存器。MOV DL,CSTRING MOV DH,CSTRING+710请编写指令将BX 寄存器初始化为变量MYDA T 的偏移地址。MOV BX,OFFSET MYDAT 或 LEA BX,MYDAT11将变量名TABL 的段地址送AX 的指令是什么?MOV AX,SEGTABL12设 MEM 是数据段中0A00H 单元的符号名,其中存放的内容为0B0CH,以下各指令语句的执行结果是什么?MOV AX,MEM 答:0B0CHLEABX,MEM 0A00H三、程序分析题1 ADW 1234H B
31、 DW 5678H PUSH A PUSH B POP A POP B 试回答:上述程序段执行后(A)5678H,(B)1234H执行前SP200H,执行后SP200H四、判断题(判断每题正误,对的在题后括号内划“”,错的划“”)1 MOV ES,BX()。2 MOV CS,BX ()。3 IN AL,DX ()。4 POPF AX()。5 POP 1234()。6 PUSH A(A 为字节单元)()。7执行 LEA BX,TABLE 与执行 MOV BX,OFFSET TABLE效果一样()。8当执行LAHF 和 SHAF 两条指令后,标志位不改变()。第五章课外练习题一、单项选择题:1假定
32、 AX 的内容为-32768,在执行了指令NEG AH 后,标志位(SF,OF)为(D)。(A)0,0(B)0,1(C)1,0(D)1,1 2已知 AL,BX 为带符号数,计算AL BX 的乘积,使用下述程序段(D)(A)MOV AH,0 MUL BX(B)MOV AH,-1 IMUL BX(C)MOV AH,0 IMUL BX(D)CBW IMUL BX 3已知 AL,BX 为无符号数,计算AL BX 的乘积,使用下述程序段(C)(A)MUL BX(B)IMUL BX(C)MOV AH,0(D)CBW MUL BX MUL BX 4当执行指令ADD AX,BX 后,若 AX 的内容为2BA0
33、H,设置的奇偶标志位PF1,下面的叙述正确的是(A)。(A)表示结果中含1 的个数为偶数(B)表示结果中含1 的个数为奇数(C)表示该数为偶数(D)表示结果中低八位含1 的个数为偶数5设 AH0,AL06H,BL09H,执行下列两条指令之后,其结果应是(A)。ADD AL,BL AAA(A)AH 01,AL 05(B)AH 1,AL 15(C)AH 0,AL0FH(D)AH 0,AL 05 6设 AL 0B4H,BL11H,指令“MUL BL”和指令“IMUL BL”分别执行后OF,CF 的值为(B)。(A)OF1,CF0(B)OF1,CF1(C)OF0,CF0(D)OF0,CF1 7当执行完
34、下列两条指令后,标志位CF 和 SF 的值为(D)。MOV AL,0C4H ADD AL,9DH(A)0,0(B)1,1(C)0,1(D)1,0 二、判断题(判断每题正误,对的在题后括号内划“”,错的划“”)1 ADD SI,BX()2 ADD AX,100()3 ADD AX,BL()4 ADD SI,100()5 ADD ES,BX()6 INC BX()7 SUB BYTE PTR SI,1()8 DEC BX,1()三、指出下列指令中的错误,并写出与该条指令意义相近的所有可能的正确指令。1 ADD BH,AX(类型错误。改正:ADD BX,AX)2 SUB 100H,AX(立即数不可做
35、目标操作数。改正:SUB AX,100H)3 MOV DS,100H(立即数不可以直接向段寄存器送数。改正:MOV AX,100H 和 MOV DS,AX)4 MOV DI,100H(两个操作数不可以同时是存储器中的数。改正:MOV AX,100H和 MOV DI,AX)5 INC 100H(立即数不可做目标操作数。改正:MOV AX,100H 和 INC AX)6 MOV AL,ARRAY BXBP(没有此寻址方式。改正:MOV AL,ARRAY BXSI)7 ADD BX,SI(两个操作数不可以同时是存储器中的数。改正:MOV AX,SI和 ADD BX,AX)四、填空题1当执行MUL B
36、X 指令后,乘积的高半部分在(DX)中,低半部分在(AX)中。2当执行 DIV BX 指令后,被除数在(DX,AX)中,所得商在(AX)中,余数在(DX)中。3已知 AL,BL 中数据为无符号数,若求AL BL 的商,应使用指令序列为:(MOV AH,0)和(DIV BL)。4已知 AL,BL 中数据为带符号数,若求AL BL 的商,应使用指令序列为:(CBW)和(IDIV)。5用一条语句实现AX 的内容加1,要求不影响CF(INC AX)。6将 AX 的内容,减去0520H,和上次运算的借位,选用(SBB AX,0520H)指令。7在 SUB AX,BX 指令执行后,CF1,说明:最高有效位
37、(有借位)。对(无符号)数,操作结果溢出。五、简答题1写一指令序列,完成将存于AX、BX 中的压缩BCD 数加到存于CX、DX 中的 8 位 BCD 数上的操作。PUSH AX MOV AL,BL ADD AL,DL DAA MOV DL,AL MOV AL,BH ADC AL,DH DAA MOV DH,AL POP BX MOV AL,BL ADC AL,CL DAA MOV CL,AL MOV AL,BH ADC AL,CH DAA MOV CH,AL 第六章课外练习题一、单项选择题:1 JMP SI 的目标地址偏移量为(A)。(A)SI 的内容(B)SI 所指向的内存字单元之内容(C)
38、SI+IP 的内容(D)IP+SI 2 JMP WORD PTR BX 转移的目标地址是(D)。(A)BX 的内容(B)SP+BX 之和(C)IP+BX 之和(D)BX 指出的内存单元之内容3当 AB 时转移的条件转移指令为(A,B 为带符号数)(D)。(A)JA (B)JAE(C)JG (D)JGE 4已知 X,Y 为带符号数,两个数比较后,欲判断XY 发生转移,应使用(C)指令。(A)JBE(B)JL (C)JNG(D)JNA 5假定 AX 和 BX 寄存器中存放的是有符号整数,如果AXBX 则转移到LABEL,应采用下面哪一条指令序列?(D)。(A)SUB AX,BX (B)SUB AX
39、,BX JC LABEL JNC LABEL(C)CMP AX,BX(D)CMP AX,BX JALABEL JG LABEL 6已知 AX=8078H,BX=5610H,指令 CMP BL,AH 执行后 OF,CF 的值为(D)(A)0,0(B)0,1(C)1,0(D)1,1 7在汇编下列条件转移指令中,两条指令功能不一样的是(D)。(A)JZ 与 JE(B)JC 与 JB(C)JA 与 JNBE (D)JP 与 JS 8循环指令LOOPNZ 终止循环的条件是(B)。(A)CX=0,且 ZF=0 (B)CX=0,或 ZF=1(C)CX0,且 ZF=0(D)CX0,或 ZF=1 9在循环次数已
40、知的情况下,采用哪种方法控制循环程序最方便(A)。(A)计数法(B)条件控制法10循环控制指令隐含指定哪个寄存器作为循环计数器(B)。(A)CL(B)CX(C)AL(D)AX 二、判断题(判断每题正误,对的在题后括号内划“”,错的划“”):1两个数相等时进行转移可用JZ 指令()2当 PF=1 时发生转移的条件转移指令为JPO()3当 XQ 的高 16 位,则 AX=1 如果 2倍 P的高 16 位 0,X0)S=XY(Y0,X0)|X+Y|(其它)MOV AX,DAX MOV BX,DAY CMP AX,0H JL NEXT CMP BX,0H JL QT IMUL BX JMP OK NE
41、XT:CMP BX,0 JGE QT MOV DX,0 IDIV BX JMP OK QT:ADD AX,BX JNS OK NEG AX OK:MOV RLT,AX第七章课外练习题一、单项选择题:1完成将累加器AL 清零,并使进位标志CF 清零,下面错误的指令是(A)。(A)MOV AL,00H(B)AND AL,00H(C)XOR AL,AL(D)SUB AL,AL 2下列指令执行后总是使CF0,OF0 的是(A)。(A)AND(B)NEG(C)NOT(D)INC 3若(AX)=10101101B,为了使其内容变为01010010B,下列(A)指令执行一次即可完成此操作?(A)NOT 指令
42、(B)OR 指令(C)AND 指令(D)XOR 指令4实现将DX:AX 中存放的32 位数扩大四倍,正确的程序段是(C)。(A)SHL AX,2(B)RCL AX,2 ROL DX,2 SHL DX,2(C)MOV CX,2(D)SHL AX,1 LOP:SHL AX,1 SHL AX,1 RCL DX,1 RCL DX,1 LOOP LOP RCL DX,1 5TA1 DW 0102H,0304H,0506H TA2 DB 02H,04H,06H MOV BX,OFFSET TA1 ADD BL,TA2+2 MOV BX,BX AND BX,0FFH ADD BH,BYTE PTR TA1
43、BX 上述指令序列运行后,BX 的内容是(B)。(A)0605H(B)0402H(C)0606H(D)0204H 6 NEXT 是某指令语句标号,下述哪个程序段不能实现转移到NEXT 语句执行(C)。(A)JMP NEXT(B)MOV BX,OFFSET NEXT JMP BX(C)MOV BX,NEXT(D)LEA AX,NEXT JMP BX JMP AX 7测试 BL 内容是否与数据4FH 相等,若相等则转NEXT 处执行,可实现的是(D)。(A)TEST BL,4FH(B)OR BL,4FH JZ NEXT JZ NEXT(C)AND BL,4FH(D)XOR BL,4FH JZ NE
44、XT JZ NEXT 8下面指令序列测试BH 中的数是否为奇数,若为奇数则转移至K1 处,括号处的指令应为(A)。TEST BH,01H()K1(A)JNE(B)JZ (C)JS (D)JC 9下面指令序列测试BX 中的数是否为负数,若为负数则转移至F1 处,不正确的指令序列应为(C)。(A)TEST BX,8000H(B)AND BX,BX JNZ F1 JS F1(C)CMP BX,0H (D)SUB BX,0H JNS F1 JL F1 10编写分支程序,在进行条件判断前,可用指令构成条件,下列指令中不能形成条件的指令是(D)。(A)CMP(B)SUB(C)AND(D)MOV 11为使
45、CX=-1 时,转至MINUS 而编制了一指令序列,其中错误的序列是(D)。(A)INC CX(B)SUB CX,0FFFFH JZ MINUS JZ MINUS(C)AND CX,0FFFFH(D)XOR CX,0FFFFH JZ MINUS JZ MINUS 二、程序分析题1AND AL,AL JZ BRCH1 RCR AL,1 JZ BRCH2 RCL AL,1 INC AL JZ BRCH3 上述程序运行后,请回答:当 AL=(0)时,程序转向BRCH1;当 AL=(1)时,程序转向BRCH2;当 AL=(-1)时,程序转向BRCH3。2现有下列程序段:MOV AX,6540H MOV
46、 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)(2106H)3分析下面程序段:MOV AL,200 SAR AL,1 MOV BL,AL MOV CL,2 SAR AL,CL ADD AL,BL 试问程序段执行后(BL)(0E4H),(AL)(0DDH)4程序段如下:BLK1 DB 46,84,34,5,20,122,73 MOV CX,7 LEASI,BLK1 NEXT:MOV AL,SI INC SI TEST AL,81H L
47、OOPZ NEXT MOV BL,SI 请回答程序段运行后:(AL)(0FB)H,(BL)(14)H 四、用最少的程序编写下列程序段:1编写完成下列功能的小程序段:?将寄存器AL 的第 4,3 位取反,其余位保持不变。XOR AL,00011000B?将寄存器AL 的第 4,3 位清零,其余位保持不变。AND AL,11100111B?将寄存器AL 的第 4,3 位置 1,其余位保持不变。OR AL,00011000B?将寄存器AL 的第 4,3 位写入 MEN 单元中的第4,3 位,其余位保持不变。AND AL,00011000B AND MEN,11100111B OR MEN,AL?将寄
48、存器AL 的第 i 位写入 MEN 单元的第i 位,其余位保持不变,i 值在 CL 中。MOV BL,1 SHL BL,CL AND AL,BL NOT BL AND MEN,BL OR MEN,AL?将寄存器AL 的第 i+1,i 位写入 MEN 单元的第i+1,i 位,其余位保持不变,i 值在 CL中。MOV BL,3 SHL BL,CL AND AL,BL NOT BL AND MEN,BL OR MEN,AL?如果寄存器AL 的第 6,5 位为 00,则将 AH 清 0,否则置全1。TEST AL,01100000B JZ L1 MOV AH,0FFH JMP OK L1:MOV AH
49、,0 OK:NOP?如果寄存器AL 的第 6,5 位为 01,则将 AH 清 0,否则置全1。AND AL,01100000B CMP AL,00100000B JZ L1 MOV AH,0FFH JMP OK L1:MOV AH,0 OK:NOP?如果寄存器AL 的第 6,5 位为 10,则将 AH 清 0,否则置全1。AND AL,01100000B CMP AL,01000000B JZ L1 MOV AH,0FFH JMP OK L1:MOV AH,0 OK:NOP?如果寄存器AL 的第 6,5 位为 11,则将 AH 清 0,否则置全1。AND AL,01100000B CMP AL
50、,01100000B JZ L1 MOV AH,0FFH JMP OK L1:MOV AH,0 OK:NOP如果寄存器AL 的数据为偶数,则将AH 清 0,否则置全1。TEST AL,1 JZ L1 MOV AH,0FFH JMP OK L1:MOV AH,0 OK:NOP如果寄存器AL 的数据为正数,则将AH 清 0,否则置全1。TEST AL,80H JZ L1 MOV AH,0FFH JMP OK L1:MOV AH,0 OK:NOP2不允许使用乘法指令来完成AX 与 12 的乘法运算。SHL AX,1;将 AX 乘 2(等于 2 倍)MOV BX,AX;预存一份AX 在 BX 内SHL