为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

汇编语言基础试题

2020-03-08 49页 doc 216KB 36阅读

用户头像

is_686908

暂无简介

举报
汇编语言基础试题第一章 基本知识 一、单项选择题(共40分,每题2分) 1.若十进制数为132.75,则其十六进制数为(B) A.21.3     B.84.C C.4.6      D.6 2.若[X补]=11111,则其十进制真值为(C) A.-31      B.-15 C.-1      D.31 3.某定点整数64位,含1位符号位,补码表示,则其绝对值最大负数为 (A) A.-263     B.-264 C.-(263-1)  D.-(263-1) 4.原码乘法是(D) A.用原码表示操作数,然后直接相乘 B.被乘数用原...
汇编语言基础试题
第一章 基本知识 一、单项选择题(共40分,每题2分) 1.若十进制数为132.75,则其十六进制数为(B) A.21.3     B.84.C C.4.6      D.6 2.若[X补]=11111,则其十进制真值为(C) A.-31      B.-15 C.-1      D.31 3.某定点整数64位,含1位符号位,补码表示,则其绝对值最大负数为 (A) A.-263     B.-264 C.-(263-1)  D.-(263-1) 4.原码乘法是(D) A.用原码表示操作数,然后直接相乘 B.被乘数用原码表示,乘数取绝对值,然后相乘 C.乘数用原码表示,被乘数取绝对值,然后相乘 D.先取操作数绝对值相乘,符号位单独处理 5.在微机系统中分析并控制指令执行的部件是(C) A.寄存器    B.数据寄存器 C.CPU     D.EU 6.已知X=76,则[X]补=(B) A.76H     B.4CH C.0B4H     D.0CCH 7.已知[X]补=80H, 则X=(D) A.80H     B.0 C.0FFH     D.-80H 8.已知[X]补=98H, 则[X]补/2=(A) A.0CCH     B.4CH C.49H     D.31H 9.已知X=78,Y=-83则[X+Y]补=(C) A.0F5H     B.0A1H C.0FBH     D.65H 10.在计算机的CPU中执行算术逻辑运算的部件是(A) A.ALU     B.PC C.AL      D.AR 11.将125转换成二进制数的结果(A) A.7DH     B.7CH C.7EH    D.7BH 12.将93H看成一个组合BCD码,其结果是(B) A.10010101   B.10010011 C.10000011   D.10000001 13.能被计算机直接识别的语言是(C) A.C语言    B.汇编语言 C.机器语言   D.面向对象语言 14.第四代计算机的逻辑电路采用的是(D)。 A.电子管    B.晶体管 C.中小规模集成电路  D.大规模和超大规模集成电路 15.可以写入数据的内存储器是(B)。 A.ROM      B.RAM C.软盘     D.大规模和超大规模集成电路 16.掉电后存储信息消失的存储器是(B)。 A.ROM      B.RAM C.软盘     D.硬盘 17.读写速度最慢的辅助存储器是(C)。 A.ROM      B.RAM C.软盘     D.硬盘 18.二进制数(11010011)2转化成十六进制数是(B)。 A.11      B.C3 C.A6      D.BC 19.语言处理程序属于软件系统的(A)。 A.系统软件   B.应用软件 C.工具软件   D.防毒软件 20.微软WORD2000应属于软件系统的(B)。 A.系统软件   B.应用软件 C.工具软件   D.防毒软件 二、填空题:请将正确的内容填入括号内。(共20分,每题2分) 1.(13)10 = (15)8。 2.(35)10 = (23)16。 3.(15)10 = (1111)2。 4. 计算机的存储容量1KB = (1024)Byte。 5. 计算机的存储容量1MB = (1024)KB。 6. 计算机的存储容量1GB = (1024)MB。 7. 存储一个汉字需要磁盘空间(2)字节。 8. 存储一个1616点阵的汉字字模需要磁盘空间(32)字节。 9. 计算机系统包括(硬件)系统和(软件)系统两大部分。 10. 计算机主存储器包括(只读存储器(或ROM))和(随机存取存储器(或RAM))两类。 三、判断题(正确的画,错误的画) (共40分,每题2分) 1.计算机中所有带符号数都是以补码形式表示的。(√) 2.汇编语言和机器语言都是面向机器的语言,编制的程序都可以为机器直接识别和执行。(×) 3.补码加减运算时,符号位与数值一样参加运算。(√) 4.的ASCII码是用7位二进制数对字符进行编码的,最高位用来表示奇偶校验位。(√) 5.计算机的硬件系统由运算器、控制器、存储器、输入设备和输出设备等组成。 (√) 6.计算机的内存储器分为随机存储器(RAM)和只读存储器(ROM)两部分。(√) 7.对计算机进行管理和维护的软件应属于应用软件。(×) 8.用户自行编制的软件可称之为系统软件。(×) 9.程序设计语言分为机器语言、汇编语言和高级语言三大类。(√) 10.现在用户大多使用汇编语言开发自己的程序。(×) 11.用机器语言编写的计算机程序,使用的是八进制数。(×) 12.十进制数的11,在十六进制中仍可写成11。(×) 13.十进制数的8,写成二进制应该是1000。(√) 14.常用微机系统中的字符编码是ASCII码。(√) 15.一个微机有640KB内存,指的是内存容量为640K个字节。(√) 16.微机的一个字节应有八个二进制数,而每一个数称为一个字位。(√) 17.微机的中央处理器也叫用微处理器。(√) 18.微型计算机由主机和外部设备两大部分组成。(√) 19.微机的主机内包括微处理器和内存储器。(√) 20.内存储器的ROM是读写存储器,而RAM是只读存储器,用户不能写入信息。(×) 第二章 8088微处理器及其寻址方式 一、单项选择题(共45分,每题3分) 1.MOV AX,ES:[1000H] 源操作数的寻址方式是(B) A.立即寻址   B.直接寻址  C.变址寻址   D.基址寻址 2.MOV AX,ES:COUNT[DI] 源操作数的寻址方式是(C) A.基址寻址   B.立即寻址 C.变址寻址   D.基址变址寻址 3.MOV DX,COUNT[BP][DI]的源操作数的寻址方式是(D) A.变址寻址   B.基址寻址   C.直接寻址   D.基址变址寻址 4.指令MOV BX,MASK[BP],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,那么物理地址为(B) A.17500H    B.16500H    C.14500H    D.13500H 5.指令MOV AX,COUNT[BX],若COUNT=0400H,SS=1200H,DS=1000H,BX=5000H,那么物理地址为(C) A.17400H    B.17000H    C.15400H    D.14500H 6.指令MOV DX,DELTA[BX][SI],若DELTA=1300H,SS=7200H,DS=5400H,BX=0500H,SI=4000H,那么物理地址为(C) A.6F300H    B.77800H    C.59800H    D.78700H 7.唯一代表存储空间中每个字节单元地址的是(D) A.段地址    B.偏移地址 C.有效地址   D.物理地址 8.在8086中,存储器是分段组织,每段最大长度是(C) A.16KB     B.32KB C.64KB     D.128KB 9.下列四组寄存器中,属于通用寄存器的是(A) A.AX,BX,CX,DX B.SP,BP,IP C.SI,DI,FLAGS D.上属三者都是 10.下列寄存器中,程序不可见寄存器是(B) A.CS     B.IP C.SP     D.BP 11.下列四组寄存器中,在段内寻址时可以提供偏移地址的寄存器组是(C) A.AX,BX,CX,DX     B.BP,SP,IP,CS C.BX,BP,SI,DI     D.BH,BL,CH,CL 12.8086/8088系统中,存储器是分段组织的,存储器物理地址计算式是(C)B A.段地址+偏移地址    B.段地址*10H+偏移地址 C.段地址*16H+偏移地址  D.段地址+10H*偏移地址 13.在标志寄存器中表示溢出的标志(C) A.AF     B.CF C.OF     D.SF 14.指令指针寄存器是(A) (A) IP   (B)SP (C)BP   (D)BX 15.当执行指令ADD AX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是(D) (A)表示结果中含1的个数为偶数   (B)表示结果中含1的个数为奇数 (C)表示该数为偶数        (D)表示结果中低八位含1的个数为偶数 二、改错题(下列各小题均有错,请针对题意改正其错误或补充其不足;共9分,每题3分) 1.在寄存器间址方式中,指令指定的寄存器中存放的是操作数。 改为: 在寄存器间址方式中,指令指定的寄存器中存放的是操作数地址。 2.程序计数器PC的内容即现行指令代码 。 改为: 程序计数器PC的内容即现行指令地址。 3.若总线地址16位,则直接访存空间最大为1M。 改为: 若总线地址16位,则直接访存空间最大为64K。 三、指出下列指令所用到的寻址方式。(共21分,每题3分) 指令 目的操作数寻址方式 源操作数寻址方式 MOV AX,1000H  寄存器寻址  立即寻址 MOV AX,DS:[1000H]  寄存器寻址  直接寻址 MOV [BX],AL  寄存器间接寻址  寄存器寻址 MOV 5[BX][SI],AX  基址变址寻址  寄存器寻址 MOV [BP],BX  基址寻址  寄存器寻址 MOV AX,-10[DI]  寄存器寻址  变址寻址 MOV AX,[SI]  寄存器寻址  寄存器间接寻址 四、判断题(正确的画,错误的画)(共25分,每题5分) 1.DS中的内容就是数据段的段地址。(×) 2.8086中内存的地址使用十六进制数编制的。(√) 3.寄存器SP和BP都可以用来访问堆栈内容。(√) 4.溢出标志可以用来判断运算的结果是否产生溢出。(×) 5.8086CPU中所有的寄存器都既可作16位寄存器又可作8位寄存器使用。(×) 第三章 汇编程序的运行方式 一、单项选择题(共40分,每题8分) 1.在汇编语言程序中,对END语句的叙述正确的是(C)。 A.END语句是一可执行语句   B.END语句表示程序执行到此结束 C.END语句表示源程序到此结束 D.END语句在汇编后要产生机器码 2.把若干个模块连接起来成为可执行文件的系统程序是(B) A.汇编程序    B.连接程序 C.机器语言程序  D.源代码程序 3.计算机能直接识别并执行的语言是(B) A.汇编语言    B.机器语言 C.高级语言    D.低级语言 4.将高级语言的程序翻译成机器码程序的实用程序是(A) A.编译程序    B.汇编程序 C.解释程序    D.目标程序 5.将汇编语言的程序翻译成机器码程序的实用程序是(B) A.编译程序    B.汇编程序 C.解释程序    D.目标程序 二、汇编语言源程序的上机操作过程?(10分) 答:汇编语言源程序的上机操作过程: 1.编辑源程序; 2.用masm程序汇编源程序; 3.用link程序连接目标程序; 4.用debug调试程序。 三、判断题(正确的画,错误的画)(共40分,每题8分) 1.DEBUG中R命令的功能是将数值填入指定范围。(×) 2.调试程序DEBUG中的T、P命令的功能没有区别。(×) 3.DEBUG只能调试程序,不能编写程序。(×) 4.结束DEBUG返回DOS的命令为Q。(√) 5.DEBUG中所使用的数默认为十进制数,对十六进制数需要加H。(×) 第四章 汇编程序的书写格式 一、单项选择题 (共60分,每题4分) 1.源程序结束语句为(C) A.ENDP     B.ENDS   C.END MAIN   D.END 2.SKY:MOV AL,20H中操作数为(D) A.MOV      B.SKY   C.AL或20H    D.AL和20H 3.下列为不合法的标志符的是(B) A.AXYZ     B.5SKY   C.@ATT     D.?ABC 4.下列地址表达式正确的是(C) A.[BX-SI]    B.[BP-DI] C.[BX+2]    D.[BP+BX] 5.NEAR标号的类型值为(B) A.2      B.-1 C.4      D.-2 6.组合类型中本段与其它段无逻辑关系,每段均有自己的基址的组合类型是(A) A.NONE     B.PUBLIC    C.COMMON    D.STACK 7.下面哪一个命令是显示内存单元的内容?(A) A.D命令    B.E命令    C.F命令    D.R命令 8.能被计算机直接识别和执行的指令是(B) A.符号指令   B.机器指令    C.伪指令    D.宏指令 9.取变量偏移属性的分析运算符是(A) A.OFFSET    B.TYPE    C.SIZE     D.SEG 10.分析运算符LENGTH只有用(C)定义的变量才有意义。 A.表达式    B.字符串    C.DUP      D.疑问号 11.在段定义中,(B)是默认的定位类型 A.PAGE     B.PARA    C.WORD     D.BYTE 12.汇编语言指令中唯一不可缺少的域是(B) A.标号名字域  B.助记符域   C.操作数域   D.注释域 13.定义缓冲区BUF,保留100个字节存储空间的语句是(D)。 A.BUF DB 100        B.BUF DW 100 C.BUF DW 100 DUP(?)   D.BUF DB 100 DUP(?) 14.汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是(B)。 A.名字项    B.操作项 C.操作数项   D.注释项 15.使计算机执行某种操作的命令是(B) A.伪指令    B.指令 C.标号     D.助记符 二、判断题(正确的画,错误的画)(共40分,每题5分) 1.指令MOV AL,2000H是合法的。(×) 2.指令MOV CX,AL是合法的。(×) 3.指令MOV IP,BX是合法的。(×) 4.串操作指令中用DI作为目的变址寄存器时使用段寄存器ES。(√) 5.OFFSET的优先级低于AND。(×) 6.语句LENGTH=SIZE*TYPE是合法的。(×) 7.语句SKY DD ‘ABCD’是合法的。(×) 8.语句QEW DB ‘ASDF’是合法的。(√) 第五章 指令及分类 一、单项选择题 (共30分,每题5分) 1.MOV BUF[BX],AX该指令中目的操作数寻址方式是(C)。 A.寄存器    B.寄存器间接 C.基址变址   D.寄存器相对 2.若AX=1020H,BX=1200H,CF=1,则SBB AX,BX的执行结果为(C) A.0EF1FH    B.0FEFFH     C.0FE1FH    D.0FE21H 3.若AX=2000H,CL=90H,则DIV CL执行后,AX=(A) A.8038H      B.8039H     C.9138H     D.8138H 4.若BL=83H,CF=1,则ADC BL,90H执行后,BL=(D) A.15H      B.16H    C.17H      D.14H 5.若DX=1010H,则AND DX,DX的执行结果为(C) A.0000H    B.1111H    C.1010H    D.FFFFH 6.换码指令的助记符是(C) A.XCHG     B.LEAS C.XLAT     D.MOV 二、判断题(正确的画,错误的画)(共70分,每题5分) 1.8086/8088的指令都是多字节指令。 (×) 2.8086/8088的指令最大长度是十个字节。 (×) 3.CLC是单字节指令。(√) 4.8086/8088的指令从功能上可以分成六组。(√) 5.同一条汇编指令助记符汇编后的指令操作码都相同。(×) 6.当一条汇编指令翻译成代码指令时,由操作码决定代码指令的格式。(×) 7.NEG属于减法指令。(√) 8.TEST属于逻辑运算指令。(√) 9.MUL指令和IMUL指令功能完全相同。(×) 10.汇编语言中的字符串分为字节串和字串两种。(×) 11.所有的字符串操作指令均可以使用重复前缀指令。(√) 12.汇编语言中对无符号数和有符号数的判别指令是不同的。(√) 13.一条指令可能有多个助记符。(√) 14.LOOPE和LOOPZ的功能完全相同。(√) 第六章 数据传送指令 一、程序分析题(阅读程序段后给出其运行结果)(15分) 设(SP)=80H,(BX)=0FFH;(AX)=1 PUSH BX ADD BX,AX XOR BX,AX PUSH BX POP CX 上述程序段运行后,(SP)=7EH,(CX)=0101H 二、单项选择题(共35分,每题5分) 1.堆栈指针SP的内容是(B) A.栈顶单元内容    B.栈顶单元地址 C.栈底单元内容    D.栈底单元地址 2.VAR是数据段中定义的变量,指令MOV AX,VAR 源操作数的寻址方式是(B) A.立即寻址      B.直接寻址 C.相对寻址      D.寄存器寻址 3.已知(DS)=3000H,(SS)=2500H,(BX)=0100H,(BP)=0040H, 指令MOV AX,DS:[BP]源操作数的物理地址是(B)。 A.25040H       B.30040H C.25100H       D.55040H 4.下列传送指令中,有语法错误的指令是(A)。 A.MOV CS,AX     B.MOV DS,AX C.MOV ES,AX     D.MOV SS,AX 5.与MOV BX,OFFSET VAR指令完全等效的指令是(D)。 A.MOV BX,VAR    B.LDS BX,VAR C.LES BX,VAR    D.LEA BX,VAR 6.MOV SP,3210H PUSH AX执行上述指令序理后,SP寄存器的值是(B)。 A.3211H        B.320EH C.320FH        D.3212H 7.执行指令PUCH CX后堆栈指针SP自动(C) A.+1         B.不操作 C.-2         D.-1 三、简答题 (30分) 已知数据段定义如下: DATA SEGMENT VA DB 10H VB DW 3*20 MSG DB ‘HELLO!’ COUNT EQU 15 BUF DW COUNT DUP(5,3 DUP(1,2),0) DATA ENDS 问题: (1)执行MOV BX,0FFSET VA后,(BX)= (2)执行MOV CX,TYPE BUF后,(CX)= (3)用一条指令将字母‘O’取到AL中. (4)经汇编后,BUF占有的存储空间是字节 答: (1)0 (2)2 (3)MOV AL, MSG+4 (4)240 四、执行下列指令语句,把执行结果填在空格中(20分) 已知(SS)=3000H (SP)=200H (AX)=785AH (BX)=1234H, 先执行PUSH AX,再执行PUSH BX,此时 (SS)= ( ) (SP)= ( ) 数12H存放的物理地址是( ) 答: (SS)= (3000H) (SP)= (1FCH) 数12H存放的物理地址是(1FDH) 第七章 算术运算程序 一、单项选择题(共24分,每题2分) 1.十进制数运算调整指令AAS可以紧跟在(A)之后: A.SBB      B.DEC   C.CMP      D.NEG 2.除法调整指令AAD是对(C)调整: A.AX中组合的十进制被除数  B.AL中组合的十进制的商数   C.AX中未组合的十进制被除数 D.AL中未组合的十进制的商数 3.在多字节加减运算时,特别要注意标志(B)对运算的影响: A.AF       B.CF   C.SF       D.OF 4.设(DS)=8260H (DI)=3500H,指令DEC WORD PTR[DI]操作数的物理地址是(B) A.11760H     B.85B00H C.86100H     D.以上都不时 5.指令ADD ES:[DI],AX和存放在(B) A.寄存器     B.附加段 C.堆栈段     D.代码段 6.设VAR是数据段中定义的字节变量,指令MUL VAR乘积存放在(A) A.AX       B.BX C.CX       D.DX 7.设(DH)=20H,执行NEG DH指令后,正确的结果是(C) A.(DH)=20H CF=1    B.(DH)=20H CF=0 C.(DH)=0E0H CF=0  D.(DH)=0E0H CF=1 8.设DS=8225H,DI=3942H,指令NEG BYTE PTR [DI]操作数的物理地址是(A) A.85B92H     B.86192H C.BB690H     D.12169H 9.执行INC指令除对于SF.ZF有影响外,还要影响的标志位是(A) A.OF,AF,PF   B.OF,AF,CF C.OF,PF,CF   D.AF,PF,CF 10.设DH=10H,执行NEG DH指令后,正确的结果是(D) A.DH=10H CF=1  B.DH=10H CF=0 C.DH=10H CF=0  D.DH=0F0H 11.执行除法指令后,影响的标志位是(D) A.CF,OF     B.SF,ZF C.CF,OF,SF   D.AF,CF,OF,PF,SF,ZF都不确定 12.执行下面指令序列后,结果是(A) MOV AL,82H CBW A.AX=0FF82H    B.AX=8082H C.AX=0082H    D.AX=0F82H 二、判断题(正确的画,错误的画)(共6分,每题2分) 1.指令AAA必须紧跟在加法指令之后使用。(√) 2.INC指令之后可以使用加法调整指令。(×) 3.AAD指令放在除法指令之后。(×) 三、程序分析题(10分) MOV AX,0 MOV BX,1 MOV CX,5 LOP:ADD AX,BX ADD BX,2 LOOP LOP 问题: (1)程序的功能是什么(可用算式表示)? (2)运行后,(AX)=? 答: (1)1+3+5+7+9 (2)25 四、按要求编程(共40分,每题10分) 1.设 X.Y.Z.W为十六位有符号数编程计算: W←((X+Y*Z)/8)-Y除法余数丢弃 若ZF=1,程序转EQ;否则转NOT_EQ。 参考答案: MOV AX,Y IMUL Z MOV BX,DX MOV CX,AX MOV AX,X CBW ADD AX, CX ADC DX, BX MOV CX,8 IDIV CX SUB AX,Y MOV W,AX JZ EQ NOT_EQ: 2.编写一程序段,计算x2+y-5多项式的值。 说明:多项式存于AX中,x.y是无符号数。 数据说明:x DB 0CH y DB 06H 参考答案: MOV AL,x MUL x ADD AL,y ADC AH,0 SUB AX,5 3.设X,Y,Z,W存放16位带符号数,编程计算X*Y-Z的值并送到W 要求:写出有关指令语句。 参考答案: MOV AX,X IMUL Y SUB AX,Z SBB DX,0 MOV W,AX 五、执行下列指令语句,把执行结果填在空格中(共20分,每题10分) 1.已知(AL)=0FFH, (BL)=10H。执行MUL BL则 (AH)=( ) (AL)=( ) 答: (AH)=(0FH) (AL)=(0F0H) 2.执行下列指令语句,把执行结果填在空格中。 已知(DS)=5000H,(BX)=0100H,(DI)=0002H,(50100H)=45H,(50101H)=68H,(50102H)=0A1H,(50103H)=14H 先执行MOV AX,[100H](AX)=( ); 再执行ADD AX,[BX+DI](AX)=( ),CF=( ),OF=( ) 答: (AX)=(6845H) (AX)=(7CE6H),CF=(0),OF=(0) 第八章 逻辑运算 一、单项选择题(共30分,每题5分) 1.下列指令执行后,不影响标志位的指令是(A) A.PUSH AX      B.ADD DX,CX C.XOR AX,AX    D.CMP AX,5 2.下列指令执行后,一定能使CF=0的指令是(B) A.NOT AX      B.OR AX,AX C.SUB BX,SI    D.ROL AX,1 3.对寄存器AX中的值除以2正确的指令序列是(C) A.MOV AX,-51  SHR AX,1 B.MOV AX,-51 ROR AX,1 C.MOV AX,-51 SAR AX,1 D.以上都不是 4.下列指令执行后,ZF=1的指令是(A)。 A.MOV AX,0     B.OR AX,0 C.XOR AX,AX    D.CMP AX,0 5.对寄存器AX的内容乘以4的正确指令序列是(B)。 A.SHR AX,1 SHR AX,1 B.SHL AX,1 SHL,AX,1 C.ROL AX,1 ROL AX,1 D.RCR AX,1 RCR AX,1 6.下面指令执行后,改变AL寄存器内容的指令是(D)。 A.TEST AL,02H    B.OR AL,AL C.CMP AL,BL     D.AND AL,BL 二、程序分析题(共40分,每题10分) 1.已知(AX)=3200H,(DX)=0A000H,执行下列程序段: NOT AX NOT DX ADD AX,1 ADC DX,0 问题: (1)程序执行后,(AX)=( )(DX)=( ) (2)程序功能是什么? 答: (1)(AX)=(0CE00H) (DX)=(5FFFH) (2)双字长数DX,AX求补 2.设(DX)=1234H MOV CL,8 ROR DX,CL AND DX,0FFH CMP DX,12H 上述程序段运行后,(Dx)=( ),ZF=( ) 答: (DX)=(12H),ZF=(1) 3.已知(AX)=0FF60H,CF=1 MOV DX,96 XOR DH,0FFH SBB AX,DX 执行上述指令序列后(AX)=( ),CF=( ) 答: (AX)=965FH,CF=(0) 4.有下列程序段 MOV AX,10 ADD AX,AX MOV BX,AX MOV CL,2 SHL AX,CL ADD AX,BX 上述程序段执行后(AX)=( ),(BX)=( ) 答: (AX)=00A0H,(BX)=(0020H) 三、程序填空(共10分,每题5分) 1.下列程序段将AX中值乘以9,请将程序填写完整 (1)__________ MOV CL,3 (2)____________ POP BX ADD AX,BX 答: (1)PUSH AX   (2)SHL AX,CL 2.下列程序段求数组ARRAY的累加和。请将程序填写完整。 ARY DW 45H,68H,…………,0ABC1H,9600H;共10项 COUNT DW 10 (1)__________ MOV CX,COUNT XOR AX,AX AGAIN:ADD AX,[SI] ADD SI,2 (2)____________ 答: (1)LEA SI,AKY   (2)LOOP AGAIN 四、按要求编程(10分) 测试AL寄存器的D5和D0位,若同时为0,程序转向ZERO,执行AX减去BX;否则将AL清0,同时清CF和OF标志。写出程序段。 解: TEST AL,00100001B JZ ZERO SUB AX,AX JMP STOP ZERO:SUB AX,BX STOP: 五、执行下列指令语句,把执行结果填在空格中(10分) 已知(DS)=2500H (SI)=00A0H (250A0H)=01H (250A1H)=96H 执行ROL WORD PTR[SI],1则 (250A0H)=( ),(250A1H)=( ),CF=( ) 答: (250A0H)=(03H) (250A1H)=(2CH) CF=(1) 第九章 分支程序 一、单项选择题(共20分,每题5分) 1.段内直接转移指令采用的寻址方式是(B) A.直接寻址       B.相对寻址   C.绝对寻址       D.间接寻址 2.下列指令中不等价的是(C) A.JA和JNBE       B.JG和JNLE   C.JL和JNG        D.JBE和JNA 3.下列指令中等价的是(C) A.JC和JO        B.JNC和JNO  C.JP和JPE        D.JA和JG 4.条件转移指令的转移范围(A) A.-128 -- +127     B.-32768 -- +32767 C.0 -- +255      D.0 -- +65535 二、判断题(正确的画,错误的画)(共15分,每题5分) 1.无条件转移指令对标志位无影响,而条件转移指令对标志位有影响。(×) 2.间接转移指令都可以通过寄存器来寻址。(×) 3.段间间接转移指令中,低地址的字送IP,高地址的字送CS。(√) 三、程序分析题(共10分,每题5分) 1.执行下列程序: MOV AX,9B47H MOV BX,0B568H ADD AX,BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4 JMP SHORT L5 问: (1)程序执行后,(AX)= ? (2)程序转向哪个标号? 答:(1)9B47H    (2)L5 2.执行下列程序: MOV AX,0C100H MOV BX,8FC0H SUB AX,BX JNC L1 JNO L2 JMP SHORT L3 程序执行后,(AX)=( ),程序转向_________________ 答:(AX)=(3140H),L1 四、程序填空(共10分,每题5分) 1.设AX,BX。CX中的数是数带符号,下列程序求AX.BX.CX中的最小值,结果在AX中.请将程序填写完整。 CMP AX,BX (1)_________________ XCHG AX,BX NEXT:CMP CX,AX (2)___________________ XCHG AX,CX EXIT: 答:(1)JLE NEXT     (2)JGE EXIT 2.下列程序测试DL寄存器D6和D2位。若同时为0,转ZERO,置AX为0,否则转NON_ZERO,置AX为1。 TEST DL,(1)_________________ JZ ZERO NO ZERO:MOV AX,1 (2)___________________ ZERO:MOV AX,0 EXIT: 答:(1)01000100B    (2)JMP NEXT 五、用分支结构完成下列程序:(20分) 在给定个数的数中寻找最大值,放至指定的存储单元。 参考程序: DATA  SEGMENT BUFFER DB  2,4,3,6,1,5 COUNT  DW  6 MAX  DB  ? DATA  ENDS CODE  SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX MOV CX, COUNT LEA BX, BUFFER MOV AX, [BX] INC BX DEC CX AGAIN: CMP AX, [BX] JGE NEXT MOV AX, [BX] INC BX NEXT:  INC BX LOOP AGAIN CODE  ENDS END  START 六、编程序:(25分) 已知ARRAY DW 1200,-69H,798AH,………432BH;共10项 编程统计正数项个数存入PLUS单元中。 要求:程序完整,可上机调试 参考程序: DATA SEGMENT ARRAY DW 1200,-69H,798AH,~~~432BH PLUS DB ? DATA SEGMENT CODE SEGMENT ASSUME CS:CODE,DS:DATA BEGIN:MOV AX,DATA MOV DS,AX MOV CX,10 MOV DL,0 LEA SI,ARRAY NEXT: CMP [SI],0 JL P1 INC DL ADD SI,2 LOOP NEXT JMP EXIT P1:  ADD SI,2 LOOP NEXT EXIT: MOV PLUS,DL MOV AH,4CH INT 21H CODE  ENDS END BEGIN 第十章 字符串操作 一、单项选择题(共30分,每题6分) 1.在MOVB指令中,其目的串的物理地址为(D) A.DS*2*2*2*2+SI    B.DS*2*2*2*2+DI     C.ES*2*2*2*2+SI    D.ES*2*2*2*2+DI 2.在串指令REP MOVSB中,重复次数一定放在(C)寄存器中。 A.AX          B.BX C.CX          D.DX 3.下面指令中,合理而有意义的指令是(D) A.REP LODSB      B.REP SCASB  C.REP CMPSB      D.REP MOVSB 4.串操作指令中,目标串操作数的段地址一定在(D)寄存器中。 A.CS          B.SS C.DS          D.ES 5.在程序状态字寄存器中,当方向标志DF位为0时,每次操作后使变址寄存器SI和DI(B) A.减量        B.增量 C.保持不变      D.地址减1 二、判断题(正确的画,错误的画)(共10分,每题5分) 1.所有串操作指令的目标串的段地址均取自于段寄存器DS。(×) 2.串操作指令一般用CX存放长度。(√) 三、程序填空题(10分) 现有下列数据段: DATA SEGMENT S1 DB ‘ABCDEFGHIJKL’ COUNT EQU $-S1 BUF DB COUNT DUP(0) DATA ENDS 下面程序段是实现把S1中所有字符逆向传送到BUF缓冲区(即S1中第一个字符送到BUF的最后一个单元,S1中最后一个字符送到BUF的第一个单元)。试把程序中所空缺的2条指令填上。 MOV SI,OFFSET BUF-1 MOV DI,OFFSET BUF MOV CX,COUNT (1)________________ L1: MOVSB (2)________________ LOOP L1 参考答案: (1)CLD (2)SUB SI,2 或 (1)STD (2)ADD DI,2 四、编程序题(共50分,第1题20分,第2题30分) 1.定义一个数据区,它包含有23H,24H,25H和26H四个字符数据,把这个数据区复制20次,并显示出复制结果。(要求用字符串指令) 参考答案: DATA SEGMENT PATTERN DB 23H,24H,25H,26H DISPLAY DB 80 DUP(‘ ’),‘$’ DATE ENDS CODE SEGMENT ┇ CLD LEA SI,PATTERN LEA DI,DISPLAY MOV CX,80 REP MOVSB MOV AH,09H LEA DX,DISPLAY INT 21H RET CODE ENDS 2.内存自BUF单元开始的缓冲区连续存放着100个学生的英文分数,编程序统计其中90~100,60~89,60以下者各有多少人?并把结果连续存放到自RESUT开始的单元中,(要求用字符串指令,各段定义完整) 参考答案: DATA SEGMENT BUF DB 40H,64H,51H… RESUT DB 3 DUP(0) DATA ENDS STACK SEGMENT STACK DB 100 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS∶DATA,ES∶DATA,SS∶STACK,CS∶CODE START PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX MOV、AX,STACK MOV SS,AX LEA SI,BUF MOV CX,100 CLD AO:LODSB CMP AL,5AH JL L60 INC [RESUT] JMP COM L60: CMP AL,3CH JGE K8960 INC [RESUT+1] JMP COM K8960: INC [RESUT+2] COM: LOOP AO RET START ENDP CODE ENDS END START 第十一章 循环程序 一、单项选择题(共10分,每题5分) 1.循环指令LOOP AGAIN终止循环的条件是(C) A.(AX)=0       B.(BX)=0 C.(CX)=0       D.(DX)=0 2.循环指令LOOP NZ终止循环的条件是(B)。 A.CX=0,且ZF=0     B.CX=0,或ZF=1 C.CX≠0,且ZF=0    D.CX≠0,或ZF=1 二、程序分析题(10分) DATA SEGMENT S9 DB 0,1,2,3,4,5,6,7,8,9 DATA ENDS ┆ LEA SI,S9 LEA, DI,S9+1 MOV CX,5 LOP: MOV AL,[SI] XCHG AL,[DI] MOV [SI],AL ADD SI,2 ADD DI,2 LOOP LOP 上述程序段运行后,S9开始的10个字节存储单元内容是什么? 答:S9 DB 1,0,3,2,5,4,7,6,9,8 三、用循环结构完成下列程序:(15分) 向存储器的十个连续单元写入1,2,3,4,5,6,7,8,9,10个数字。 参考答案: DATA  SEGMANT BUFFER DB 10 DUP(?) VAR1  DB 1,2,3,4,5,6,7,8,9,10 COUNT  DB 10 DATA  ENDS CODE  SEGMANT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX LEA DI, BUFFER LEA SI, VAR1 MOV CH, 0 MOV CL, COUNT AGAIN:MOV AL, [DI] MOV [SI], AL INC DI INC SI LOOP AGAIN CODE  ENDS END START 四、编写一程序段统计数组ARY中负数的个数,并存入CONT单元中。(15分) 参考答案: DATA SEGMENT ARY DB 一1, 0, 3, 一6,7, 23,0,-50,3,1 CONT DB ? DATA ENDS MOV SI, 0 MOV BL, 0 MOV CX, 10 LOP:CMP ARY[SI], 0 JGE BIG INC BL BIG:INC SI LOOP LOP MOV CONT, BL 五、编写一程序段,统计数据区BUF中0的个数,并存入RES单元。数据段为:(20分) DATA SEGMENT BUF DB 0,5,0,3,2 RES DB ? DATA ENDS 参考答案: MOV CX,5 MOV SI,OFFSET BUF MOV BL,0 LOP:MOV AL,〔SI〕 CMP AL,0 JNE NEXT INC BL NEXT:INC SI LOOP LOP MOV RES,BL 六、编程序(30分) 在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首址的数据区中。 DATA SEGMENT BUF1 DW -56,24,54,-1,89,-8,---- BUF2 DW 45,-23,124,345,-265,---- SUM DW 10 DUP(0) DATA ENDS 参考程序: DATA SEGMENT BUF1 DW -56,24,54,-1,89,-8,---- BUF2 DW 45,-23,124,345,-265,---- SUM DW 10 DUP(0) DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATA MOV DS,AX MOV CX,10 LEA SI,BUF1 LEA DI,BUF2 LEA BX,SUM NEXT:MOV AX,[SI] MOV DX,[DI] TEST AX,8000H JE TDX NEG AX TDX:TEST DX,8000H JE ADDS NEG DX ADDS:ADD AX,DX MOV [BX],AX ADD SI,2 ADD DI,2 ADD BX,2 LOOP NEXT MOV AH,4CH INT 21H CODE ENDS END START 第十二章 过程 一、下面的程序段有错吗?若有,请指出错误。(25分) CRAY PROC PUSH AX ADD AX,BX RET ENDP CRAY 参考答案: 程序最后一行有错,应写成: CRAY ENDP 二、判断题(正确的画,错误的画)(共15分,每题5分) 1.寄存器传递参数法适合于参数较多的情况。(×) 2.用赋值法编写子程序时,子程序内必须修改返回地址。(√) 3.RET N指令中,N可为任意值。(×) 三、程序分析题(阅读程序段后给出答案)(共20分,每题10分) 1. MOV AL,0FH MOV BL,10H CALL SUB1 INC AL DEC BL SUB1 PROC ADD AL,BL XCHG AL,BL RET SUB1 ENDP 上述程序段运行后,(AL)=( ),(BL)=( )。 答:(AL)=(11H),(BL)=(1EH)。 2. MOV AL,38H MOV BL,49H CALL SUBO INC AL DEC CL SUBO PROC ADD AL,BL MOV CL,AL DAA RET SUBO ENDP 上述程序段运行后,(AL)=( ),(CL)=( ) 答:(AL)=(88H),(CL)=(80H) 四、简答题(共10分,每题5分) 在指令系统中,段内、段间返回均为RET指令。试回答: (1)执行段内返回RET指令时,执行的操作是: (2)执行段间返回RET指令时,执行的操作是: 答: (1)执行段内返回: 栈顶内容→IP,SP+2→SP (2)执行段间返回: 栈顶内容→IP,SP+2→SP 栈顶内容→CS,SP+2→SP 五、编写子程序题(20分) 编写一个子程序,完成两个非压缩型BCD数(每个数均不大于99)的加法。两个入口参数分别在AX,BX中,结果仍放在AX中。若结果大于99,则CF置1。 参考答案: 子程序为: ADD_BCD PROC PUSH CX MOV CH,AH ADD AL,BL AAA XCHG AL,CH ADC AL,BH AAA MOV AH,AL MOV AL,CH POP CX RET ADD_BCD ENDP 六、编程题(30分) 设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。要求子程序开始时必须利用堆栈保护用到的各寄存器,并在返回前恢复;主程序结构要书写完整(包括子程序的调用方式)(结果不必输出)。其中数据段如下: DATA SEGMENT DAT DB -6 SQRTAB DB 0,1,4,9,16,25,36,49,64,81 SQR DB ? DATA ENDS 参考答案: DATA  SEGMENT DAT  DB -6 SQRTAB DB 0,1,4,9,16,25,36,47,64,81 SQR  DB ? DATA  ENDS STACK  SEGMENT PARA STACK DW 20H DUP(?) STACK  ENDS CODE  SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX CALL SUBROT MOV AH,4CH INT 21H SUBROT PROC PUSH AX PUSH BX LEA BX,SQRTAB MOV AL,DAT TEST AL,80H JNS NEXT NEG AL NEXT: XLAT SQRTAB MOV SQR,AL POP BX POP AX RET SUBROT ENDP CODE  ENDS END  SRART 第十三章 中断及中断处理程序 一、单项选择题(共25分,每题5分) 1.中断服务程序入口地址占用(A)个字节 A.4       B.6  C.2       D.1 2.INT 1AH指令执行的结果高位字存在(C)中 A.AX      B.BX  C.CX      D.DX 3.DOS系统功能调用的屏幕显示字符是(D)号调用 A.1       B.4  C.5       D.2 4.2BH DOS功能调用中,月份送给(A)寄存器 A.DH      B.DL    C.AL      D.AH 5.键盘中断调用(16H)的0号功能是将读入字符的ASCII码送入(B) A.AH      B.AL C.BH      D.BL 二、判断题(正确的画,错误的画)(共15分,每题5分) 1.IN AL,DX是将一个字节由输入端口传送至AL。(√) 2.所有中断过程均可用IRET指令退出。(√) 3.8号类型的中断向量在中断向量表中的地址是2*8。(×) 三、INT 21H的键盘输入功能1和功能8有什么区别?(5分) 答:二者不同点是功能1输入字符可回显,功能8输入字符不回显。 四、编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。(25分) 加密表为; 输入数字:0,1,2,3,4,5,6,7,8,9 密码数字:7,5,9,1,3,6,8,0,2,4 答: DSEG SEGMENT SCODE DB 7,5,9,1,3,6,8,0,2,4 BUFFER DB 10 DUP (?) DSEG ENDS ;-------------------------------------------------------------------- CSEG SEGMENT MAIN PROC FAR MOV AX,DSEG MOV DS,AX MOV SI,0 MOV CX,10 LEA BX,SCODE INPUT: MOV AH,01 ; 键盘输入 INT 21H AND AL,0FH ; ASCII→数字 XLAT ; 换码 MOV BUFFER[SI],AL ; 存入缓冲区 INC SI ; 修改地址指针 LOOP INPUT ; 输入下一个数字 MOV AX,4C00H ; 返回DOS INT 21H MAIN ENDP CSEG ENDS END MAIN 五、写一段程序,显示如下格式的信息;(15分) Try again, you have n starfighters left. 其中n为CX寄存器中的1-9之间的二进制数。 答: MESSAGE DB ‘TRY AGAIN, YOU HAVE’ COUNT DB ‘N’ DB ‘ STARFIGHTERS LEFT.$’ ; … … ADD CL,30H ;二进制数→ASCII MOV COUNT, CL ;存入COUNT LEA DX, MESSAGE ;字符串地址 MOV AH, 09 ;显示字符串 INT 21H ;DOS调用 六、编写程序,让屏幕上显示出信息" What is the date(mm / dd / yy)?"并响铃(响铃符为07),然后从键盘接收数据,并按要求的格式保存在date存储区中。(15分) 答: MESS DB ‘WHAT IS THE DATE(MM / DD / YY)’, 07, ‘$’ DATE DB 10,0,10 DUP (‘ ‘) … 汇编语言期末复习题 DX:单项选择题  DU:多项选择题    TK:填空题    MC:名词解释    v JD:简答题      CXFX:程序分析题    CXTK:程序填空题  BC:编程题 第1章:基础知识 1、在汇编语言程序的开发过程中使用宏功能的顺序是(     C    )。    DX A、宏定义,宏调用                        B、宏定义,宏展开 C、宏定义,宏调用,宏展开                D、宏定义,宏展开,宏调用 2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是(     B    )。    DX A、名字项        B、操作项        C、操作数项        D、注释项 3、可屏蔽中断就是它的请求是否被CPU响应要受 (  IF  )的控制。    DX 4、使用LINK连接命令,执行后可生成文件的扩展名为(  EXE  )。    DX 5、在寄存器间接寻址中,如果指令中指定的寄存器为BP,则操作数在 堆栈  段中,段地址在  SS  寄存器中。    TK 6、注释项用于说明程序段或是一条和几条指令的功能,一般用  ;(或分号)     表示注释的开始。    TK 7、DOS系统功能调用方式为:(1)置入口参数;(2)中断程序编号送  AH  寄存器后执行INT  21H。    TK 8、通常主程序和子程序间参数传送的方法有三种: 用寄存器传递 、 用存储单元传递、用堆栈传递(顺序可调换)。    TK 9、  中断    是CPU暂停当前程序的执行,转而执行处理紧急事务的程序,并在该事务处理完后能自动恢复执行原先程序的过程。在此,称引起紧急事务的事件为    中断源      。    TK 10、在字符串操作指令中,DS∶    SI      指向源串,ES∶      DI    指向目的串。    TK 11、计算机系统通过  接口      与外围设备通信。    TK 12、键盘I/O、显示I/O和打印I/O分别对应    16H    、  10H      和  17H            号中断。    TK 13、字符显示模式缓冲区中的一个字对应于屏幕上的一个字符。每个字的第一个字节为显示字符的    ASCII码      ,第二个字节为显示字符的    属性      。    TK 14、简述上机运行汇编语言程序的过程。    JD 答:首先打开未来汇编,新建一个空的汇编文件,后缀为.asm,然后输入汇编程序代码,保存,再编译成机器指令,然后连接成可执行文件,即exe文件,最后再运行。 15、简述程序中指令和伪指令的区别。    JD 答:能被计算机识别并执行的二进制代码,它规定了计算机能完成的某一操作。 伪指令是对汇编起某种控制作用的特殊命令,其格式与通常的操作指令一样,并可加在汇编程序的任何地方,但它们并不产生机器指令。 16、十六进制数88H,可表示成下面几种形式,请找出错误的表示(④ )。    DX ① 无符号十进制数136 ② 带符号十进制数-120 ③ 压缩型BCD码十进制数88 ④ 8位二进制数-8的补码表示 17、指令指针寄存器是(IP )。  DX 18、汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法(B)    DX A.名字的第一个字符可以是大写英文字母及小写英文字母 B.名字的第一个字符可以是字母、数字及、@、_ C.名字的有效长度≤31个字符 D.在名字中不允许出现$ 19、CS寄存器属于(  段寄存器  )。    DX 20、已知物理地址(371F0H)=12H,(371F1H)=34H,(371F2H)=56H,如从地址371F0H中取出一个字的内容是(  3412H  )。    DX 21、一个有16个字的数据区,它的起始地址是70A0H∶DDF6H,则这个数据区最末一个字单元的物理地址是(  7E814H  )。    DX 22、简述上机运行汇编语言程序的过程。    JD  答:首先打开未来汇编,新建一个空的汇编文件,后缀为.asm,然后输入汇编程序代码,保存,再编译成机器指令,然后连接成可执行文件,即exe文件,最后再运行。 第2章:8086/8088的寻址方式和指令系统 1、下列指令属于基址加变址寻址方式的是( MOV  DX,DS:[BP][SI] )。    DX 2、当程序顺序执行时,每取一条指令语句,IP指针增加的值是(  D  )。    DX A.1          B.2          C.3      D.由指令长度决定的 3、下列属于合法的指令是(  D  )    DX A.MOV  DS,ES    B.MOV  [SI],[DI]    C.MOV  AX,BL    D.MOV  [DI],BL 4、若AX=349DH,CX=000FH。则执行指令AND  AX,CX后,AX的值是(  000DH  )。    DX 5、设DS=8225H,DI=3942H,指令NEG BYTE PTR[DI]操作数的物理地址是(   85B92H    )  DX 6、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是(     B    )      DX A、AX,BX,CX,DX    B、BX,BP,SI,DI  C、SP,IP,BP,DX        D、CS,DS,ES,SS 7、对寄存器AX的内容乘以4的正确指令序列是(    SHL AX,1     SHL,AX,1     )。    DX 8、执行INC指令除对SF、ZF有影响外,还要影响的标志位是(     OF,AF,PF    )。    DX 9、设DH=10H,执行NEG DH指令后,正确的结果是(    DH=0F0H    CF=1     )。    DX 10、下列传送指令中有语法错误的是(    A     )。    DX A、MOV CS,AX      B、MOV DS,AX  C、MOV SS,AX  D、MOV ES,AX 11、下面指令执行后,改变AL寄存器内容的指令是(    D     )。    DX A、TEST  AL,02H      B、OR  AL,AL  C、CMP  AL,BL      D、AND  AL,BL 12、执行除法指令后,影响的标志位是(    AF,CF,OF,PF,SF,ZF都不确定     )。    DX 13、执行下面指令序列后,结果是(    AX=0FF82H     )。    DX MOV  AL,82H CBW 14、与MOV  BX,OFFSET VAR指令完全等效的指令是(    D     )。    DX A、MOV  BX,VAR     B、LDS  BX,VAR  C、LES  BX,VAR    D、LEA  BX,VAR 15、在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是(    PARA )。    DX 16、MOV  SP,3210H PUSH  AX    执行上述指令序列后,SP寄存器的值是(     320EH    )。    DX 17、BUF  DW  10H DUP(3 DUP(2,10H),3,5) 上述语句汇编后,为变量BUF分配的存储单元字节数是(     100H    )。    DX 18、MOV  AH,7896H ADD  AL,AH 上述指令执行后,标志位CF和OF的值是(  CF=1,OF=0  )。    DX 19、完成将带符号数AX的内容除以2的正确指令是( SHR  AX,1 )。    DX 20、在汇编语言程序中,对END语句的叙述正确的是(  C  )。    DX A.END语句是一可执行语句        B.END语句表示程序执行到此结束 C.END语句表示源程序到此结束    D.END语句在汇编后要产生机器码 21、已知BX=2000H,SI=1234H,则指令MOV AX,[BX+SI+2]的源操作在(数据段中偏移量为3236H的字节)中。    DX 22、下面指令序列执行后完成的运算,正确的算术表达式应是(y=x2-1)。    DX MOV AL,BYTE PTR X SHL AL,1 DEC AL MOV BYTE PTR Y,AL  23、已知(AX)=1234H,执行下述三条指令后,(AX)= (0000H)。    DX MOV BX,AX NEG BX ADD AX,BX A.1234H  B.0EDCCH  C.6DCCH  D. 24、将DX的内容除以2,正确的指令是(C)。    DX A.DIV 2  B.DIV DX,2  C.SAR DX,1  D.SHL DX,1 25、有如下指令序列:    DX ORG  40H DA1  DW  0AB12H,8574H …… MOV  AX,DA1 MOV  BX,OFFSET  DA1 上述指令执行后,寄存器AX和BX的值分别为(  AB12H,40H  )。 26、下列数值表达式和地址表达式中,错误的是(  D  )。    DX A.MOV  AL,8*14+4              B.MOV  SI,OFFSET  BUF+13 C.MOV  CX,NUM2-NUM1        D.MOV  CX,NUM2+NUM1 27、数据段定义如下:    DX X1  DB  10H,50,1 X2  DW  10H,20,3 X3  DD  ? COUNT  EQU  X3-X1 变量COUNT的值是(  9  )。 28、为使CX=-1时,转至MINUS而编制了一指令序列,其中错误的序列是(   C    )。    DX A、INC CX  JZ MINUS                    B、SUB CX,OFFFFH  JZ MINUS C、AND CX,OFFFFH  JZ MINUS        D、XOR CX,OFFFFH  JZ MINUS 29、AL和VAR字节单元中分别存放一个带符号数,执行CMP AL,VAR时,如AL>VAR,那么溢出位和符号位 的关系是(    OF=SF     )。    DX 30、下面是关于汇编语言程序中使用RET的描述,不正确的是(  C  )。    DX A.每一个子程序中允许有多条RET指令。  B.每一个子程序结束之前一定要有一条RET指令。 C.每一个子程序中只允许有一条RET指令。 D.以过程形式表示的代码段,一定有RET指令存在。 31、在串操作指令前使用重复前缀指令REPE,终止串的重复操作条件是(  CX=0或ZF=0  )。    DX 32、用MOV指令将十进制64以组合型BCD码格式送入AX,正确使用的指令是(  MOV  AX,0604H  )。    DX 33、重复前缀指令REP的重复次数由      CX        决定。    TK 34、DR1  DB  10H,30H DR2  DW  10H  DUP(0,2  DUP(2)) …… MOV  BL,LENGTH  DR1 MOV  CL,LENGTH  DR2  请问指令执行后,BL和CL的值分别为    1        和      10H      。    TK 35、设(SP)=100H,(AX)=0FFFFH STC PUSH  AX ADC  AX,0 PUSH  AX POP  BX    上述程序段运行后,(BX)=    0      ,(SP)=      0FEH        。  CXFX 36、假设数据段定义如下:  DA1  DW  ’C’,’D’ DA2  DB  18  DUP(?) DA3  DW  $-DA2 …… MOV  BX,DA3 MOV  AX,DA1 上述指令执行后,BX寄存器中的内容是12H(或18),AH寄存器中的内容是 00H,AL寄存器中的内容是43H 。CXFX    37、现有如下数据段 DATA    SEGMENT ARRAY1  DB  1,26,‘3456’ ARRAY2  DW  7,89H,10 VAL      EQU  ARRAY2-ARRAY1 DATA    ENDS 请问:该数据段已占有  12(或0CH)        字节的存储空间。    CXFX 38、当执行指令ADD AX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是( ④)。  DX ① 表示结果中含1的个数为偶数  ② 表示结果中含1的个数为奇数 ③ 表示该数为偶数  ④ 表示结果中低八位含1的个数为偶数 39、AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是( C )    DX A.指令XOR AX,AX执行后,AX内容不变,但设置了标志位 B.指令OR DX,1000H执行后,将DX最高位置1,其余各位置0 C.指令AND AX,OFH执行后,分离出AL低四位 D.NOT AX,执行后,将AX清0 40、完成对CL寄存器的内容乘以4的正确操作是( C  )    DX A.ROL CL,1        B.MUL 4 ROL CL,1 C.SHL CL,1        D.MOV CL,2 SHL CL,1             SHL CL,CL 41、下面各传送指令中,正确的是( C  )    DX A.MOV [DI],[SI]  B.MOV[DX+DI],AL    C.MOV WORD PTR [BX],0100H D.MOV AL,BX 42、要实现使BETA的值为56,应采用语句为( BETA EQU 56  )    DX 43、REPZ CMPSW指令,重复执行的终止条件是( CX=0或ZF=0  )    DX 44、下面程序段执行后,AL中的内容是( 21H  )    DX MOV AX,8833H ADD AL,AH DAA 45、完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是(① )。  DX ① MOV AL,00H  ② AND AL,00H  ③ XOR AL,AL  ④ SUB AL,AL 46、下列指令执行后总是使CF=0,OF=0的是( AND)。  DX 47、完成同指令XCHG AX,BX相同功能的指令或指令序列是(④ )。  DX ① MOV AX,BX  ② MOV BX,AX ③ PUSH AX POP BX ④ MOV CX,AX MOV AX,BX MOV BX,CX 48、设AH=0,AL=06H,BL=09H,执行指令 ADD AL,BL              AAA 之后,其结果应是(AH=01,AL=05 )。  DX 49、设AL=0B4H,BL=11H,指令“MUL BL”和指令“IMUL BL”分别执行后OF,CF的值为(OF=1,CF=1 )。  DX 50、在串操作指令前使用重复前缀指令REPE,终止串的重复操作条件是(CX=0或ZF=0 )。  DX 51、下面指令中,合理而有意义的指令是(④ )。  DX ① REP LODSB  ② REP SCASB  ③ REP CMPSB  ④ REP MOVSB 52、在下列串操作指令中,同时使用源串和目的串地址指针的指令是( D  )    DX A.STOSW  B.LODSW   C.SCASW     D.CMPSW 53、AL=0AH,下列指令执行后能使AL=05H的是( C  )    DX A.NOT AL  B.AND AL,0FH  C.XOR AL,0FH   D.OR AL,0FH 54、DA1  DW‘AB’,‘CD’,‘EF’,‘GH’ ┇ MOV AX,DA1+3 指令执行后AX中的内容是( ‘FC’  )。    DX 55、在汇编语言程序中,对END语句的叙述正确的是( ③)。  DX ① END语句是一可执行语句  ② END语句表示程序执行到此结束 ③ END语句表示源程序到此结束  ④ END语句在汇编后要产生机器码 56、下面的数据传送指令中,错误的操作是(④ )。  DX ① MOV SS:[BX+DI],1000H  ② MOV DX,1000H  ③ MOV WORD PTR[BX],1000H  ④ MOV DS,2000H 57、下面指令执行后,变量DAB中的内容是(0F5H )。  DX DAW DW2A05H DAB DB 0FAH : MOV AL,BYTE PRT DAW SUB DAB,AL 58、执行下列指令后,正确的结果是(② )。  DX MOV AL,100 MOV BL,-2 ① AL=100H BL=02H ② AL=64H BL=0FEH ③ AL=64H BL=82H ④ AL=100H BL=0FEH 59、设数据段中已有: DA1 DB 12H,34H DA2 DW 56H,78H 下面有语法错误的语句是(② )。  DX ① ADR1 DW DA1  ② MOV DA1+1,AX ③ MOV BYTE PTR DA2+1,AL  ④ MOV WORD PTR DA1+1,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的内容是( 0402H)。  DX 61、若DS=0F3EH,SI=2000H,COUNT=0A8H,指令MOV AX,(SI+COUNT)中,源操作数的有效地址EA为___20A8H _____,其物理地址为___11488H _____。    TK 62、如JMP指令采用段间间接寻址,那么由4个相邻字节单元中存放有转移地址,其中前两个字节存放的是____ IP____,而后两个字节存放的是____ CS____。    TK 63、在串操作程序中,通常在重复前缀指令REPZ或REPNZ后,选用的串操作指令是___ STOS____或___ CMP__才有实际意义。    TK 64、已知:BX=1357H,DI=2000H,DS=2000H,CS=4000H,分别指出下面各指令中存储器操作数的物理地址。    JD (1)MOV AL,[BX] 21357H (2)MOV CS:[BX+DI],AH 43357H 65、 0P1 DB 1,2 0P2 DW 3412H,5678H ┇ MOV AX,OP1+1;字单元(OP1+1) AX MOV BL,OP2+1;字节单元(OP2+1) BL 上述二条传送语句有语法错误,请根据注释字段的说明,将其改正。    JD MOV 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(?) 400 67、简述下面两条指令分别是什么语法错误?    JD MOV [BX],[SI] MOV AX,DL MOV指令不能在两个存储器操作数之间进行; 操作数类型不匹配。 68、在指令系统中,段内、段间返回均为RET指令。试回答:    JD (1)执行段内返回RET指令时,执行的操作是:栈顶内容→IP,SP+2→SP  (2)执行段间返回RET指令时,执行的操作是:①栈顶内容→IP,SP+2→SP  ②栈顶内容→CS,SP+2→SP  69、 ARY DW 10 DUP(?) ┇ MOV AL,TYPE ARY MOV BL,LENGTH ARY MOV CL,SIZE ARY 上述MOV指令序列执行后的结果是什么?    JD  AL=2  BL=10  CL=20  70、设某数据段:      JD DATA SEGMENT ORG 20H NUM1=8 NUM2=NUM1+10H DA1 DB 'COMPUTER' DB 0AH,0DH COUNT EQU $-DA1 DA2 DW'CO','MP','UT','ER' DATA ENDS 试回答:(1)DA1的偏移地址是: 20H  (2)COUNT的值是 0AH  (3)DA2+5字节单元的内容是 ‘U’的ASCII码_ 71、已知 AX=0FF60H,CF=1            MOV DX,96 XOR DH,0FFH SBB AX,DX 执行上述指令序列后,AX=_________0__________,CF=______0__________。    CXFX 72、设寄存器AL,BL,CL中内容均为76H, XOR AL,0FH AND BL,0FH OR CL,0FH 执行上述指令序列后,AL=______79H ___,BL=__06H ___CL=_7FH___。          CXFX 73、已知 AX=0A33AH,DX=0F0F0H AND AH,DL XOR AL,DH NEG AH NOT AL 执行上述指令序列后,AH=____60H____,AL=_____35H_。    CXFX 74、假定(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、写出完成下述功能的程序段:    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 =1554 76、写一程序段,求双字长数DX∶bX的相反数。    JD 答: NEG DX NEG AX SBB DX, 0 77、在某子程序的开始处要保护AX,BX,CX,DX四个寄存器信息,在子程序结束时要恢复这四个寄存器信息。例如:        JD PUSH AX\ PUSH BX \ 保护现场 PUSH CX / PUSH DX/ : }恢复现场 试写出恢复现场时的指令序列。 答: POP DX  POP CX POP BX POP AX 78、完成下列操作,选用什么指令:    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 : PUSH A PUSH B POP A POP B 试回答:    CXFX ①上述程序段执行后(A)=__________,(B)=_____ ②设执行前SP=200H,执行后SP=____________ 答: ①(A)=5678H(2分)(B)=1234H(2分) ②SP=2000H(2分) 81、现有下列程序段:    CXFX MOV 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)=_2106H_ 82、分析下面程序段,    CXFX MOV AL,200 SAR AL,1 MOV BL,AL MOV CL,2 SAR AL,CL ADD AL,BL    试问程序段执行后(BL)=__0E4H_(AL)=__0DDH___ 83、DA3 EQU WORD PTR DA4 DA4 DB 0ABH,89H ┇ SHR DA3,1 MOV DX,DA3 SHL DA4,1 MOV CX,DA3  上述程序段运行后,CX=___44AAH___,DX=__44D5H___。    CXFX 84、设(SP)=100H,(AX)=0FFFFH STC PUSH  AX ADC  AX,0 PUSH  AX POP  BX  上述程序段运行后,(BX)=    0        ,(SP)=      0FEH        。    CXFX 85、STRING DB ‘ABCDEFGHIJ' : MOV AH,01 ;从键盘输入字符1~9 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 根据从键盘输入的字符‘1’~‘9’,确定在显示器上显示STRING中第几个字符。(2)如从键盘输入字符‘4',程序段有什么结果? 显示器显示字符‘D’ 86、已知: BX=4567H NEG BX INC BX NEG BX DEC BX              程序段执行后,BX=____4565H___,CF=___1_____。      CXFX 87、已知数据段中定义 DAT1 DB  12H,34H,56H,78H MOV CX,0 MOV AX,WORD PTR DAT1 MOV CL,DAT1+3     当程序段执行完后AX=___3412H____,CX=__0078H_____。      CXFX 88、DA1  DB 83H,72H,61H,94H,5AH ┇ MOV CX,WORD PTR DA1 AND CX,0FH MOV AL,DA1+3 SHL AL,CL          上述指令序列执行后,AL=__0A0H____,CL=__03H____。          CXFX 89、现有如下程序段:      CXFX DATA SEGMENT DA3 EQU 1234H ORG 0020H DA4 EQU $-DA2 DA1 DW 12H,23H DA5 DB 31H,32H DA2 DB 11H,21H DATA ENDS 请回答:(1)该程序段已占有的存储字节数是多少?(2)符号名DA4的值是多少?符号名DA5的值是多少? 答:(1) 该程序段已占有的存储字节数是8个字节。(2) 符号名DA4的值为2,符号名DA5的值是0026H。 90、执行下列程序段后,回答问题。    CXFX ORG 1221H MOV BX,OFFSET NUM NUM DW 12H MOV CL,BYTE PTR NUM+1 … MOV CH,TYPE NUM MOV AX,NUM HLT 请问:(AX)=______,(BX)=______,(CX)=______。 答:(AX)=0012H (BX)=1221H (CX)=0200H 91、执行下列指令后AX、BX寄存器的内容?    CXFX MOV SI,10H MOV AX,1234H MOV [SI+12H],AX LEA BX,[SI] MOV [SI+14H],BX 答:AX为1234H,BX为22H LES BX,DWORD PTR [SI+12H] 92、试编制一程序段,用串操作指令实现以DA_BY为首址的20H个字节单元中存放相同字符‘Y’(设DA_BY存储区已有ES指向)。    BC LEA DI,DA_BY MOV CX,32 MOV AL,‘Y’ CLD REP STOSB 93、在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首址的数据区中。    BC DATA SEGMENT BUF1 DW-56,24,54,-1,89,-8…… BUF2 DW45,-23,124,345,-265,…… SUM DW10DUP(0) DATA ENDS 94、编制程序段实现:将AX寄存器中的16位二进制数分成四组,每组4位,然后把这4组数分别放在AL、BL、CL、和DL中。    BC MOV BH,AL MOV CH,AH MOV AL,AH AND AL,0F0H MOV BL,AH AND BL,0FH MOV CL,BH AND CL,0F0H MOV DL,BH AND DL,0FH 95、在NUMW单元存放有一个0-65535范围内的整数,将该数除以500,商和余数分别存入QU1和REM单元,请在空行处各填上一条指令完善该程序。    CXTK ┇ MOV AX,NUMW ____ MOV BX,500_________ XOR DX,DX DIV BX MOV QUI,AX ____ MOV REM,DX _________ 96、已知数据段中定义 DAT1 DB  12H,34H,56H,78H MOV CX,0 MOV AX,WORD PTR DAT1 MOV CL,DAT1+3  当程序段执行完后AX=___3412H _____,CX=___0078H _____。    CXFX 97、DA1  DB 83H,72H,61H,94H,5AH ┇ MOV CX,WORD PTR DA1 AND CX,0FH MOV AL,DA1+3 SHL AL,CL 上述指令序列执行后,AL=___0A0H ____,CL=___03H ____。    CXFX 98、DA3 EQU WORD PTR DA4 DA4 DB 0ABH,89H ┇ SHR DA3,1 MOV DX,DA3 SHL DA4,1 MOV CX,DA3 上述程序段运行后,CX=____44AAH _____,DX=_____44D5H _______。    CXFX 99、编制完整程序实现下列算式:W=X+Y+36-Z。设X、Y、Z、W均为双字长数据,各自的低十六位数和高十六位数分别存放在X、X+2、Y、Y+2、Z、Z+2的存储单元中,结果的低十六位字和高十六位字分别存放在W和W+2两个单元中。      BC DATA SEGMENT X DD … Y DD … Z DD … W DD … DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AX,X ADD AX,Y MOV BX,X+2 ADC BX,Y+2 ADD AX,36 ADC BX,0 SUB AX,Z SBB BX,Z+2 MOV W,AX MOV W+2,BX CODE ENDS END START 第3章:8086汇编语言程序格式 1、指令JMP FAR PTR DONE属于(段间转移直接寻址)。    DX 2、下列叙述正确的是(C)。    DX A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令 C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL指令 D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令 3、一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是(12C59H)。    DX 4、某存储单元的物理地址是12345H,可以作为它的段地址有( D  )    DX A.2345H        B.12345H C.12340H       D.1234H 5、在执行DAA指令,当高四位BCD码校正时产生进位,如要把此进位值送入AH中,对这进位值的操作应是(进位值在CF中,校正后根据CF内容再加在AH中)    DX 6、执行后使BX=0的同时也使CF=0,OF=0的指令是( XOR BX,BX  )    DX 7、在执行下列指令时,需要使用段寄存器DS的指令是( D  )    DX A.STOSW        B.ADD AL,CL C.NEG BX       D.INC DA[BX] 8、无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是( OR BH,01H  )    DX 9、比较两个带符号的数A、B,当A=B时程序转移,测试的条件为( ZF=1  )    DX 10、使用DOS系统功能调用时,使用的软中断指令是( B  )    DX A.INT 21     B.INT 10H C.INT 16H     D.INT 21H 11、十六进制数0FFF8H表示的十进制正数为____+65528____,表示的十进制负数为____-32760____。TK 12、CPU的标志寄存器中标志位,可以分为两大类,其中一类称为___状态_____标志位,另一类称为____控制____标志位。    TK 13、当标志位___CF___=1时表示无符号数运算产生溢出,而当标志位__ OF____=1是表示带符号数运算产生溢出。    TK 14、在程序执行过程中,IP寄存器中始终保存的是 (下一条指令的首地址)。    DX 15、PSW寄存器中共有___6___位条件状态位,有___3___位控制状态位。()。    DX 16、串指令中的目的操作数地址是由___ ES:[DI]___提供。 17、8086CPU在基址加变址的寻址方式中,变址寄存器可以为(SI或DI)。    DX 18、什么叫寻址方式?常用的寻址方式有哪些?      JD 答:寻址方式是指寻找指令中操作数所在地址的方法。 常用的寻址方式有:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、基址加变址、隐含寻址等。 第4章:顺序程序设计 1、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有(    D     )。 A、CMP        B、SUB        C、AND        D、MOV 第5章:分支程序设计 1、检查二个无符号数的关系,若要实现AL≥BL时分支去LOP1处,那么在“CMP AL,BL”指令后应跟的分支指令是( JC LOP1  )    DX 2、下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,横线处的指令应为( )。  DX TEST BH,01H __JNE_______K1 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 BL,64H MOV CL,03H XOR AX,AX AGAIN:ADD AL,BL ADC AH,0 DEC CL JNZ AGAIN 问:(1)该程序段完成的功能是:将AX内容乘3送BX中          CXFX (2)AX=___012CH_____。 6、 MOV DL,AL NOT DL TEST DL,04H JE NEXT ┇ NEXT:… 若上述程序段执行时产生分支,说明AL中的数第几位一定为1?程序段执行后CF是多少?    CXFX 第2位;CF=0 7、设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中存放,请将程序中所缺指令语句补上。    CXTK TEST AX,8000H __JE K1或JZ K1_________ MOV PLW,BX JMP DONE K1:__MOV PLW,A___________ DONE: 8、下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置全1。试把空白处填上适当指令。    CXTK ___ XOR AH,AL____ AND AH,08H ____ JE ZERO_____ MOV AH,OFFH JMP NEXT ZERO:MOV AH,0 NEXT:…… 9、以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中。    CXTK BUF DB 5,6,7,58H,62,45H,127,…… COUNT EQU $-BUF MAX DB? ┇ MON BX,OFFSET BUF MOV CX,COUNT-1 MOV AL,[BX] LOP1:INC BX ____ CMP AL,[BX]_______ __ JAE NEXT MOV AL,[BX] NEXT:DEC CX _____ JNZ LOP1___________ MOV MAX,AL 10、编程序段计算SUM=∑ai=a1+a2+...+a20,已知a1......a20依次存放在以BUF为首址,i=1的数据区,每个数据占两个字节,和数SUM也为两个字节。(要求用循环结构编写,循环控制采用计数控制)。(此题勿需书写源程序格式,只需把要求的有关指令序列书写出来。)    CX MOV AX,0 MOV BX,OFFSET BUF MOV CX,20 LOP:ADD AX,[BX] INC BX INC BX LOOP LOP MOV SUM,AX 11、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。  CX 答: BEGIN:MOV AH,1 INT 21H CMP AL,’a’ JB STOP CMP AL,’z’ JA STOP SUB AL,20H MOV DL,AL MOV AH,2 INT 21H JMP BEGIN STOP:RET 12、 AND AL,AL JZ BRCH1 RCR AL,1 JZ BRCH2 RCL AL,1 INC AL JZ BRCH3 : 上述程序运行后,试回答:    CXFX (1)当(AL)=__0________时,程序转向BRCH1 (2)当(AL)=__1________时,程序转向BRCH2 (3)当(AL)=__-1________时,程序转向BRCH3 13、下面程序的功能是什么?    CXFX MOV CH,4 LAB:MOV CL,4 ROL BX,CL MOV DL,BL AND DL,0FH ADD DL,30H CMP DL,3AH JL PRINT ADD DL,7 PRINT:MOV AH,02 INT 21H DEC CH JNZ LAB 显示输出BX寄存器里的内容 14、阅读如下程序:    CXFX ADRR DB XXH,XXH,……,XXH CMP ADRR[BX],0 NUM EQU $ -ADRR LOOPZ DON RETT DB? JNZ NEXT … MOV BL,OFFH MOV CX,NUM NEXT:MOV RETT,BL MOV BX,-1 HLT DON:INC BX 请问:(1)该程序完成的功能是什么?(2)程序执行后指出RETT字节单元中的内容是什么? 答:(1) 在以ADRR为起始地址的数组中,查找第一个非0数据。 (2) 若找到则将第一个非0数据在数组中的偏移量送入RETT单元中;若无非0数据,则将OFFH送入RETT单元中。 15、现有一子程序:    CXFX SUB1 PROC PLUS:TEST BL,80H TEST AL,80H JE EXITO JE PLUS XCHANGE:XCHG AL,BL TEST BL,80H EXITO:RET JNE EXITO SUB1 ENDP JMP XCHANGE 试回答: (1)子程序的功能是什么? (2)若调用子程序前AL=9AH,BL=77H,则返回主程序时,AL=______,BL=______。 答:(1)子程序的功能是判别AL和BL中的数是否为异号数,当为异号时交换,否则不变。 (2) AL=77H, BL=9AH 16、阅读程序段:    CXFX BLOCK DB 20H,1FH,08H,81H,OFFH… LOP1:CMP AL,[SI+1] RESULT DB? JNG NEXT … MOV AL,[SI+1] START:LEA SI,BLOCK NEXT:INC SI MOV CX,[SI] LOOP LOP1 INC SI MOV RESULT,AL MOV AL,[SI] HLT 请问:(1)该程序完成的功能是什么?(2)该程序循环的次数是多少? 答:(1) 该程序完成的功能是从20H(32)个有符号数中找出最小的数送入RESULT单元中。 (2) 该程序的循环次数是1FH(31)。 17、阅读如下程序段,回答所提出的问题,假定X1,X2,XN为无符号数。    CXFX ORG 100H BLOK DW X1,X2,…,XN COUNT EQU($-BLOLOK)/2 RESULT DW COUNT,? LEA BX,BLOK-2 MOV CX,RESULT XOR AX,AX GOON:ADD BX,2 CMP AX,[BX] JAE NEXT MOV AX,[BX] NEXT:LOOP GOON MOV RESULT+2,AX 程序段执行完,回答下述问题 RESULT+2字存储单元的内容=______ BX=______ 程序循环次数=______ 答:  RESULT+2字存储单元的内容是MAX(X1, X2, … XN) BX= 100H + 2×(COUNT-1) 程序循环次数= COUNT 18、下面程序的功能是什么?    CXFX MOV AX,X CMP AX,Y JGE LAB XCHG AX,Y LAB:MOV X,AX  答:选择X,Y中的较大值存入X中 19、某程序欲用单个字符显示的2号功能调用去显示STRING中的字符串‘COMPUTER’(不显示字符‘$’!).试在空白处填上适当的一条指令。    CXTK STRING DB‘COMPUTER’,‘$’ ┇ MOV BX,0FFSET STRING LOP:MOV DL,[BX] MOV AH,02H INT 21H _____ INC BX_______________ _____CMP [BX],24H________ JNE LOP 20下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置全1。试把空白处填上适当指令.CXTK ____ XOR AH,AL_______________ AND AH,08H _____ JE ZERO______________ MOV AH,OFFH JMP NEXT ZERO:MOV AH,0 NEXT:…… 21、在表TABLE处存放着N个无符号字节数,求表中前10个字节数的总和并保存在AX寄存器中。如果总和值超过AX寄存器的容量,则置AX寄存器内容不变。请在程序中的空格处填入适当指令使其完整。    CXTK LEA BX,TABLE     (2)    MOV CX,10 JC END0 MOV SUM,AX DON:INC BX MEXT:    (1)     (3)      ADC AH,0 ENDO:HLT JNC DON  答: (1) ADD AL, [BX] (2) MOV AX, SUM (3) LOOP NEXT 22、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。  BC 答: BEGIN:MOV AH,1 INT 21H CMP AL,’a’ JB STOP CMP AL,’z’ JA STOP SUB AL,20H MOV DL,AL MOV AH,2 INT 21H JMP BEGIN STOP:RET 23、试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为奇数,则将进位位置1,否则进位位清0。      BC DATA  SEGMENT DA1  DW  XXXX DATA ENDS 答: CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV  AX,DATA MOV  DS,AX LEA  SI,DA1 MOV  CX,16 XOR BL,BL AGAIN: MOV  AL,[SI] HL AL,1 JC NEXT INC BL NEXT:INC SI LOOP AGAIN TEST BL,01H JNE  L1 CLC JMP DONE L1: STC DONE: MOV AH,4CH INT 21H CODE ENDS END START 24、编定程序段,用DOS的1号功能调用通过键盘输入一字符,并判断输入的字符。如字符是"Y",则转向YES程序段;如字符是"N",则转向NO程序段;如是其他字符,则转向DOS功能调用,重新输入字符。(考生勿需写出源程序格式,只需写出与试题要求有关的指令序列)  (YES和NO分别是两程序段入口处的标号)      BC KEY:MOV AH,1 INT 21H CMP AL,‘Y’ JE YES CMP AL,‘N’ JE NO JMP KEY 答案: DATA SEGMENT BUF1 DW -56,24,54,-1,89,-8,---- BUF2 DW 45,-23,124,345,-265,---- SUM DW 10 DUP(0) DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATA MOV DS,AX MOV CX,10 LEA SI,BUF1 LEA DI,BUF2 LEA BX,SUM NEXT:MOV AX,[SI] MOV DX,[DI] TEST AX,8000H JE TDX NEG AX TDX:TEST DX,8000H JE ADDS NEG DX ADDS:ADD AX,DX MOV [BX],AX ADD SI,2 ADD DI,2 ADD BX,2 LOOP NEXT MOV AH,4CH INT 21H CODE ENDS END START 25、 LEA  SI,STR MOV  AL,ODH XOR  CX,CX GOON:CMP  AL,[SI] JZ  NEXT INC  CX INC  SI JMP  GOON NEXT:MOV  COUNT,CX 字节变量STR中存放着一个字符串‘abcdefGHIJK’,以0DH为结束标志,上述指令序列完成的功能是    求字符串长度        ,执行以上指令后字变量COUNT=  11    。    CXFX 26、下列程序片段用来分别统计ARRAY数组中奇数和偶数的个数。请在空白处填写合适的指令。      CXTK DATA    SEGMENT ARRAY  DW  23ABH,1570H,567,1765H,46,5210H COUNT  EQU  ($-ARRAY)/2 DA1    DB  ? DA2    DB  ? DATA    ENDS …… LEA  SI,ARRAY MOV  CX,COUNT LOP1:MOV  AX,[SI] TEST  AX,0001H    JZ  LOP2 INC  BL JMP  LOP3 LOP2:INC  BH LOP3:    ADD  SI,2        DEC  CX JNZ  LOP1 MOV  DA1,BL MOV  DA2,BH -1  x<0 27、编写计算下面函数值的程序  y=    0  x=0 1  x>0 其中,输入数据x和输出数据y均在数据段中定义,且皆为字节变量。  BC DATA  SEGMENT X    DB  45H Y    DB  ? DATA  ENDS            ; CODE  SEGMENT ASSUME CS:CODE,DS:DATA    START:MOV AX,DATA MOV DS,AX                  MOV AL,XXX MOV AH,0 CMP AL,0 JGE NEXT1                  MOV BL,-1 JMP OVER                  NEXT1:CMP AL,0 JE  NEXT2                  MOV BL,1 JMP OVER                  NEXT2:MOV BL,0 OVER: MOV ZZZ,BL MOV AH,4CH                INT 21H CODE  ENDS END  START                28、写一个把字符串中的大写字母改写为小写字母的子程序(近过程)。设字符串以0为结束标志。    BC ;子程序名:STRLWR  ;功    能:把字符串中的所有大写字母改写为小写字母 ;入口参数:DS∶BX=存放改写所需字符串的缓冲区首地址 ;出口参数:无 STRLWR  PROC                  PUSH  AX PUSH  SI            MOV  SI,BX          AGAIN: MOV  AL,[SI]        OR  AL,AL JZ  OK              CMP  AL,’A’ JB  NEXT CMP  AL,’Z’ JA  NEXT          OR  AL,20H(或者ADD  AL,30H)  MOV  [SI],AL          NEXT: INC  SI              JMP  AGAIN          OK: POP  SI POP  AX            RET                  STRLWR  ENDP            第6章:循环程序设计 1、循环控制指令LoopNZ/LoopNE控制循环继续执行的条件是(CX≠0且ZF=0)    DX 2、循环指令LOOPNZ终止循环的条件是(     CX=0,或ZF=1    )。    DX 3、检查BUF的内容是否为正偶数,如是正偶数,则0TAL。下面程序段正确的是(   C   )。DX A、MOV AL,BUF JS K1 SHR AL,1 JNC K1 MOV AL,0 K1:…… B、MOV AL,BUF AND AL,11 JNZ K2 MOV AL,0 K2:…… C、MOV AL,BUF TEST AL,81H JNZ K3 MOV AL,0 K3:…… 4、下列描述中,执行循环的次数最多的情况是(  A  )。    DX A.MOV  CX,0                            B.MOV  CX,1 LOP:LOOP  LOP                            LOP:LOOP  LOP C.MOV  CX,0FFFFH                      D.MOV  CX,256 LOP:LOOP  LOP                            LOP:LOOP  LOP 5、 DATA SEGMENT S9 DB0,1,2,3,4,5,6,7,8,9 DATA ENDS ┇ LEA SI,S9 LEA,DI,S9+1 MOV CX,5 LOP: MOV AL,[SI] XCHG AL,[DI] MOV [SI],AL ADD SI,2 ADD DI,2 LOOP LOP 上述程序段运行后,S9开始的10个字节存储单元内容是什么?    CXFX S9 DB 1,0,3,2,5,4,7,6,9,8 6、实现将DX:AX中存放的32位数扩大四倍,正确的程序段是(③ )。  DX ① SHL AX,2 ROL DX,2 ② RCL AX,2 SHL DX,2 ③ MOV CX,2 LOP:SHL AX,1 RCL DX,1 LOOP LOP ④ SHL AX,1 SHL AX,1 RCL DX,1 RCL DX,1 7、在下列指令中,  D  指令的执行会影响条件码中的CF位。      DX A.JMP NEXT  B.JC NEXT  C.INC BX  D.SHL AX,1 8、下列指令执行时出错的是(A)。    DX A.ADD BUF1,BUF2  B.JMP DWORD PTR DAT [BX] C.MOV AX,[BX+DI] NUM D.TEST AL,08H 9、在下列指令的表示中,不正确的是(C)。    DX A.MOV AL,[BX+SI]  B.JMP SHORT DONI  C.DEC [BX]  D.MUL CL 10、在进行二重循环程序设计时,下列描述正确的是(A)。    DX A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内 B.外循环初值应置外循环之内;内循环初值应置内循环之内 C.内、外循环初值都应置外循环之外 D.内、外循环初值都应置内循环之外,外循环之内 11、条件转移指令JNE的测试条件为(ZF=0)。    DX 12、执行如下程序: MOV AX,0 MOV BX,1 MOV CX,100 A:ADD AX,BX INC BX LOOP A HLT 执行后(BX)= (101)。    DX  13、上题的程序执行后(AX)= (5050)。    DX 14、对于下列程序段: AGAIN:MOV AL,[SI] MOV ES:[DI],AL INC SI INC DI LOOP AGAIN 也可用__ REP MOVSB __指令完成同样的功能。    DX 15、 DA1  DB‘ABCDEFGHI’ DA2  DB  9 DUP(0) ┇ LEA SI,DA1 LEA DI,DA2 MOV CX,9 CLD LOP: LODSB SUB AL,10H STOSB LOOP LOP . . . 试问:①写出程序执行后DA2各字节中的数据。        CXFX ②保持程序功能情况下,程序中 可否改写为 123456789;不能更改 16、程序段如下:    CXFX BLK1 DB 46,84,34,-5,20,122,73 : MOV CX,7 LEA S1,BLK1 NEXT: MOV AL,[SI] INC SI TEST AL,81H LOOPZ NEXT MOV BL,[SI] : 请回答程序段运行后:(AL)=___5或0FBH__ (BL)=___14H或20______ 17、下面程序的功能是什么?    CXFX STRING DB 100 DUP(?) MOV AX,SEG STRING MOV DS,AX LEA SI,STRING MOV CX,100 LAB: MOV AL,[SI] CMP AL,’a’ JB  LAB1 CMP AL,’z’ JA  LAB1 SUB AL,32 MOV [SI],A LAB1: INC SI LOOP LAB 将STRING里的小写字母’a’-‘z’转成相应的大写字母’A’-‘Z’ 18、现有下列数据段:    CXTK DATA SEGMENT STR1 DB‘ABCDEFGHIJKL' COUNT EQU -STR1 BUF DB COUNT DUP(0) DATA ENDS 下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空缺的指令填上。 MOV SI,OFFSET BUF-1 MOV DI,OFFSET BUF MOV CX,COUNT ___CLD_或  STD_____ LOOP:MOVSB ______ SUB SI,2__或____ ADD DI,2__ LOOP LOP 19、下述程序段完成计算2~20之间的偶数的和,并存于AX中。试把空白处填上适当的指令。    CXTK XOR  AX,AX MOV  BX,0 MOV  CX,10或MOV  CX,0AH        CONT: ADD  AX,BX ADD  BX,2              LOOP  CONT 20、BEG为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排放这100个字节数据。请在程序中的空格处填入适当的指令使其完整。    CXTK MOV CX,32H LEA SI,BEG MOV DI,SI (1)    DON:MOV AL,[SI] (2)    MOV [SI],AL (3)    DEC DI LOOP DON HLT 答:  (1) ADD DI, 99 (2) XCHG AL, [DI] (3) INC SI 21、试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为奇数,则将进位位置1,否则进位位清0。      BC DATA  SEGMENT DA1  DW  XXXX DATA ENDS 答: CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV  AX,DATA MOV  DS,AX LEA  SI,DA1 MOV  CX,16 XOR BL,BL AGAIN: MOV  AL,[SI] HL AL,1 JC NEXT INC BL NEXT:INC SI LOOP AGAIN TEST BL,01H JNE  L1 CLC JMP DONE L1: STC DONE: MOV AH,4CH INT 21H CODE ENDS END START 22、下述程序段完成计算2~20之间的偶数的和,并存于AX中。试把空白处填上适当的指令。    CXTK XOR  AX,AX MOV  BX,0 MOV  CX,10或MOV  CX,0AH      CONT: ADD  AX,BX ADD  BX,2                LOOP  CONT 23、如下程序应用冒泡法对一个无符号数组排序(由小到大排序),请完成该程序。 (注:为该程序分配100字的堆栈存储空间。)    CXTK SSEG  SEGMENT  STACK DW  100  DUP  (?)            SSEG  ENDS DSEG  SEGMENT SWAP  DB  ?                ARRAY  DW  32760, 127, 0, 65000, 230, 100 DSEG  ENDS CSEG  SEGMENT ASSUME  CS∶CSEG,DS∶DSEG,SS∶SSEG START: MOV  AX,DSEG MOV  DS,AX SORT:  MOV  CX,5 MOV  SI,0              MOV  SWAP,0 INNER: MOV  AX,ARRAY[SI] CMP  AX,ARRAY[SI+2] JBE  NOSWAP XCHG  AX,ARRAY[SI+2] MOV  ARRAY[SI],AX          MOV  SWAP,1 NOSWAP:  ADD  SI,2             
/
本文档为【汇编语言基础试题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索