1、12009 和 2010 计科班汇编语言程序设计复习提纲一、 单项选择题()1.指令指针寄存器是( ) 。CA.BP B.SP C.IP D.PSW 2. DAL DB 67HNUM EQU 80H则执行 AND DAL,NUM语句后 DAL中的内容是( ) 。DA. E7H B. 80H C. 67H D. 03.与指令 MOV AX,NOT 0F0H等效的汇编语言指令是( ) 。BA. MOV AX,0FH B. MOV AX,0FF0FHC. MOV AX,000FH D. MOV AX,0F0H4.一个有 16个字的数据区,它的起始地址是 70A0H:DDF6H,则这个数据区最末一个字
2、单元的物理地址是( ) 。BA.7E806H B.7E814H C.7E815H D.7E80BH5.可用作基址变址寻址或寄存器间接寻址的寄存器是( ) 。DA.AX,BX,CX,DX B.DS,ES,CS,SS2C.SP,BP,IP,BX D.SI,DI,BP,BX6.在串操作指令中,下列描述中不正确的是( ) 。DA.REP MOVSB B.REP STOSBC.REPE CMPSB D.REP LODSB7. ORG 0030HDA1 DB 0 , 0, 30H偏移地址为 0030H字存储单元的内容是( ) 。AA.3000H B.00H C.0030H D.3030H8.编写分支程序,
3、在进行条件判断前,可用指令构成条件,其中不能形成条件的指令是( ) 。DA. CMP B.SUB C.AND D.MOV9.将汇编语言源程序翻译成机器码程序的程序是( ) 。BA.编译程序 B.汇编程序 C.解释程序 D.目标程序10.设 DS=1E4AH,偏移地址为 0056H,该字节的物理地址为( ) 。DA. 1E4A6H B. 1E456HC. 1E556H D. 1E4F6H311.当程序顺序执行时,每取一条指令语句,IP指针增加的值是( )AA.由指令长度决定的字节数 B.1C.2 D.312.若 AX=349DH, CX=0FH。则执行指令AND AX,CX后,AX 的值是( )
4、 。BA.349DCH B.000DH C.049DH D.0240H13. 设(AX)=0FC77H, (CX) =504H, CF=1,执行 SAR AX, CL指令后,AX 的值是( ) 。CA. FFC8H B. FFC9H C. FFC7H D.FCC8H14.假设字节单元(02398H)=12H, (02399H) =34H, (0239AH) =56H,则(02399H)字单元的内容是( ) 。CA.3412H B.3456H C.5634H D.1234H15.INC WORD PTR BX指令中操作数的数据类型是( ) 。AA.字 B.双字 C.字节 D.四字16.下列 4条
5、指令中,错误的指令是( ) 。BA.SUB CX,DX B.MOV AX,SS:DXC.SHL AX,1 D.ADD AX,BP+SI17.若 AX=912DH, CX=0FH,执行指令 OR AX, 4CX后,AX 的值是( ) 。BA.000DH B.912FH C.912AH D.002FH18.指令 MOV AX,COUNTSI,它的源操作数的的寻址方式是() 。BA.直接寻址 B.寄存器相对寻址C.寄存器间接寻址 D.基址变址寻址19.下列 4条指令中,错误的指令是() 。BA.SHR AX,1 B.MOV AX,ES:DXC.SUB CX,AX D.ADD BX,BP+DI20.在
6、 IBM PC微机中,如果某一内存单元的物理地址是 7E7F6H,那么它的逻辑地址是():DDF6H。BA.70B0H B.70A0H C.70C0H D.7E76H21.下面两条指令执行后,CF 和 OF的值是() 。AA.CF=1 OF=0 B.CF=1 OF=1 C.CF=0 OF=1 D.CF=0 OF=0MOV AL, 12H;ADD AL,OFFH;22.使用 LINK连接命令,执行后可生成文件的扩展名为() 。BA.COM B.EXE C.OBJ D.LST523.累加器 AL中的内容为 81H,CMP AL,54H 指令执行后,累加器 AL中的内容为() 。CA.2DH B.0
7、0H C.81H D.D5H24.在串操作指令前使用重复前缀指令REPE,终止串的重复操作条件是() 。CA.CX=0且 ZF=0 B.CX=0且 ZF=1C.CX=0或 ZF=0 D.CX=0或 ZF=125.执行下列指令后,正确的结果是() 。BMOV AL,100MOV BL,-1A.AL=100H,BL=01H B.AL=64H,BL=0FFHC.AL=64H,BL=81H D.AL=100H,BL=0FFH26.在循环程序中使用 LOOP指令作为循环结束的判断,其计数值一般应放的寄存器是() 。CA.DX B.BP C.CX D.IP27.在汇编语言程序设计中,伪指令 OFFSET的
8、含义是回送变量或标号的() 。DA.段地址值 B.物理地址值 C.操作数 D.偏移地址值628.指令指针寄存器 IP用于存放代码段中的偏移地址,在程序执行过程中它始终指向() 。BA.上一条指令的首地址 B.下一条指令的首地址C.正在执行指令的首地址 D.需计算 EA后才能确定的地址29.下面的数据传送指令中,错误的操作是() 。DA.MOV SS:BX+DI,1000H B.MOV DX,1000HC.MOV WORD PTRBX,1000H D.MOV DS,2000H30.为使执行串操作指令时地址按减量方式处理,应使用的指令是() 。AA.STD B.STI C.CLD D.CLI31.
9、在下列指令的表示中,不正确的是() 。CA.MOV AL,BX+SI BJMP LABC.DEC BX DMUL CL32.若 AX=56B8H,CX= FF00H,当执行 AND AX,CX 指令后,AX 的值是() 。A7A.5600H B.0056H C.0000H D.0FFFFH33.下面对伪指令语句的说明,正确的是() 。AA.由汇编程序在汇编过程中执行的指令是伪指令B.当汇编结束后,目标程序中仍保留有伪指令C.伪指令是程序运行阶段完成其功能D.汇编程序将伪指令翻译成机器码34.设逻辑地址为 2F4BH:00C7H,那么它所对应存储单元的物理地址是( ) 。CA.2F4B7H B.
10、2F598H C.2F577H D.2EB76H35.在下列段寄存器中,堆栈段寄存器是( ) 。DA.ES B.CS C.DS D.SS 36.下列汇编语言指令中,不正确的指令是( ) 。AA.MOV BXBP,AX B.AND DH,DL 8C.ADD SI, LAB D.LEA SI,BX+LAB37.若(DS)=2000H,(BX)=0050H,(20050H)=34H,(20051H)=12H,则执行 MOV AX,BX指令后,AX 寄存器中的内容是( ) 。CA.(AX)=0050H B.(AX)=0012H C(AX)=1234H D.(AX)=3412H38.在执行 POP BX
11、指令寻找目的操作数时,存放段地址和偏移地址的寄存器是( ) 。BA.SS,BX B.DS,BX C.ES,BX D.SS,BP39.完成将带符号数 AX的内容除以 2的正确指令是( ) 。DA.RCR AX,1 B.ROR AX,1 C.SHR AX,1 D.SAR AX,140.设 SP=1FFDH,下面两条指令执行后,SP寄存器的内容是( ) 。CPUSH BXPOPFA.1FFBH B.1FFFH C.1FFDH D.2OOOH941.下面指令执行后,改变 AL寄存器内容的指令是( ) 。DA.CMP AL,BL B.OR AL,AL C.TEST AL,BL D.AND AL,BL42
12、.INC BYTE PTR BX指令中的操作数的数据类型是( ) 。CA.双字 B.字 C.字节 D. 四字43.用指令的助记符、符号地址、标号和伪指令、宏指令等书写程序的语言称为( ) 。A.汇编语言 B.高级语言 C.机器语言 D.低级语言44.完成将累加器 AX清零,下列指令中错误的指令是( ) 。DA.XOR AX,AX B.SUB AX,AX C.AND AX,00H D.OR AX,00H45.在 8086/8088系统中。存储器是分段组织的,每段最大字节的长度是( ) 。CA.8K B.16K C.64K D.1M46.设(AX)=0A8H,CF=1,执行 RCR AX,110指
13、令后,AX 寄存器的内容是( ) 。BA.0545H B.8054H C.0547H D.00B5H47.执行下列指令序列后,正确的结果是( ) 。DMOV AL,81HADD AL,ALSBB AL,ALA.AL=01H B.AL=10H C.AL=00H D.AL=0FFH48.在下述指令的表示中,不正确的是() 。BA. PUSH 54DI B. MOV AX, BXNUMSIC.MOV AX,BX+BP+NUM D.AND DH,DL49.已知(AX)=875BH,执行下述三条指令后,(AX)=() 。DMOV BX, AXNEG BXADD AX, BXA. 875BH B.0EDC
14、CH C. 6DCCHD.0000H1150.指令 JMP FAR PTR LOP1属于() 。CA段内直接转移 B.段内间接转移C段间直接转移 D段间间接转移51.对两个无符号数 A、B 进行比较时,采用 JBE/JNA指令,转移的条件是() 。CA.CF=0或 ZF=1 B.CF=0或 SF=1C.CF=1或 ZF=1 D.ZF=0或 SF=052.设 SP初值为 1000H,执行指令 PUSH BX后,SP 的值是() 。DA.1022H B.0FF8H C.FFFHD.0FFEH53.设 CF=1,AL=09H,BL=05H,执行指令ADC AL,BL之后,其结果应是() 。CA. A
15、L=04 B. AL=0EH C.AL=0FH D.AL=0DH54.计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的编码。目前,微机中普遍采用的是() 。CA.BCD码 B.二进制码 C.ASCII 码 D.十六进制码55.设变量定义如下:DA_WORD DW 3, 5AH;指令 ADDAL, TYPE DA_WORD的等效指令是12() 。AA.ADD AL, 3 B.ADD AL, 2C.ADD AL, 1 D.ADD AL, 456.从键盘输入一个十进制数 2002,将该数值以压缩型 BCD码的存储形式保存到存储器中,其存放的顺序是() 。BA. 20, 02 B. 02,
16、20 C. 32, 30, 30, 32 D. 32, 30, 32, 3057.CUP发出的访问存储器的地址是() 。AA物理地址 B.偏移地址 C.逻辑地址 D.段地址58如 AX=0FFFFH,当执行如下指令后,AX 的值为() 。DNEG AXA.0000H B.0FFFFH C.0F00HD.0001H59.逻辑运算指令是按位进行运算的,指令执行后不保留运算结果,只对标志寄存器产生影响的指令是() 。CA.AND B.XOR C.TEST D.OR60.在 8086系统中,一个字节的无符号数13能表达的数值范围是() 。BA.07H B.0255 C.0256 D.012861.设
17、DS=3635H,DI=0083H,指令 INC BYTEPTR DI操作数的物理地址是() 。CA.36AD8H B.36353H C.363D3H D.0A018H62.执行下列指令序列后,结果 AX中的值是() 。BMOV AL,91HCBWA. 0091H B. 0FF91H C. 0F91H D.1F91H63.指令 ADD AX,3500H中,源操作数使用的寻址方式是( ) 。AA.直接寻址 B.寄存器寻址 C.寄存器相当寻址 D.立即寻址64.条件转移指令 JZ产生转移的测试条件是( ) 。BA.ZF=0 B.ZF=1 C.ZF=1或CF=1 D.ZF=0或 CF=165.在字符
18、串操作指令中,源串操作数的缺14省段寄存器是( ) 。CA.CS B.SS C.DS D.ES66.使用 DOS系统功能调用终止当前程序并返回 DOS操作系统,应选用的指令是( ) 。CA.MOV AH,01H B.MOV BL,BXINT 21H INT 21HC.MOV AH,4CH D.RETINT 21H INT 21H67.下列指令中,有语法错误的指令是( ) 。AA.MOV CS,AX B.MOV BL,BX C.MOV SS,BP+DI D.MOV ES,AX68.将 CX寄存器清零,下面指令中错误的指令是() 。CA.SUB CX,CX B.XOR CX,CX C.XOR CX
19、,00H D.AND CX,00H69.DA DW AB在存储器中从低地址到15高地址的存储顺序是() 。BA.41H,42H B.42H,41H C.0041H,0042H D.0042H,0041H70.下述指令中对标志寄存器 PSW中标志位不产生影响的指令是( ) 。DA.INC SI B.TEST AL,0FH C.SAR BL,1 D.JMP LOP二、填空题(每空 1分)1.完成同指令 XCHG AX ,BX 相同功能的指令序列是_,_,_答案:MOV CX, AX;MOV AX,BX;MOV BX,CX。2.某子程序的开始处要保护 AX,BX,CX,DX 四个寄存器信息:PUSH
20、 AXPUSH BXPUSH CXPUSH DX在子程序结束时要恢复这四个寄存器信息,请填写指令_答案:POP DX;POP CX;POP BX;POP AX3. 写出下列存储器地址的段基址、偏移地址和物理地址。3200H:0123H段基址:_、偏移地址:_、物理地址:_答案:段基址:3200H、偏移地址:0123H、物理地址:32123H。48086 产生物理地址的方式用公式表示为:_答案:PA(或物理地址)、SA(或段基址) 、10H(或16) 、EA(或偏移地址)5.指出下列各条件跳转指令的类型(无符号数,带符号数也应说明)JB _JNA _JGE _JCXZ _答案:无符号数小于转、无
21、符号数不大于(或无符号数小于或等于)转、带符号数大于或16等于转、CX 的值等于 0 转。5.在 8086/8088 汇编语言中,串操作指令中搜索字符串指令的助记符是( ) 。答案:SCAS6.当发生除法溢出时,OF=( ) 。答案:17.指令 JMP WORD PTR BX属于( ) 。答案:段内间接转移。8.当源程序被汇编时,汇编程序对每个宏调用作( ) 。答案:宏展开。9. DD 伪指令中定义的每个操作数占有( )个字节。答案:4.10.以后进先出方式工作的存储空间是( ) 。答案:堆栈。11.计算机在程序运行时执行的是() 。答案:指令。12.保留逻辑段地址的寄存器,有四个:CS、DS
22、、SS、ES,它们是( ) 。答案:段寄存器。13.假设(SS)=3000H, (SP)=0140H,如果在堆栈中存入 2 个数据,则栈顶的物理地址是( ) 。答案:3013CH。14.指令 MOV AX,VARBX的源操作数属于( )寻址。答案:寄存器相对。15保存当前栈顶地址的寄存器是( ) 。答案:SP16唯一代表存储空间中每个字节单元的地址是( ) 。答案:物理地址.17能被计算机直接识别的语言是( ) 。答案:机器语言.18记录指令操作结果的标志:OF、SF、ZF、AF、PF、CF 是( ) 。答案:状态标志.19由汇编程序在汇编过程中执行的指令是( ) 。答案:伪指令.20.指令下
23、一条将要执行的指令的偏移地址存于( )寄存器。答案:IP.21.存储程序、数据等信息的装置是( ) 。答案:存储器.22,把汇编语言程序翻译成机器语言程序的系统程序是( ) 。答案:汇编程序.23.分析、控制并执行指令的部件是( ) 。答案:控制器.24.控制操作数的标志位(PC 机有 DF、ZF、TF)是( ) 。答案: 控制标志.25.逻辑段的起始地址是( ) 。答案:段首址.26.相对于段起始地址的偏移量是( ) 。17答案:偏移地址.27.CPU 发出的访问存储器的地址是( ) 。答案:物理地址.28.若(SP)=0FFEH,则指令 POP AX 执行后, (SP)=( )答案:100
24、0H29.回送变量或标号的偏移地址值,应使用( )伪指令。答案:OFFSET30.常用 DOS 系统功能调用的 1 号、2 号、9 号和 10 号功能调用分别完成_,_,_,和_。答案:1 号实现键盘单字符输入、2 号实现屏幕单字符输出、9 号实现屏幕字符串输出和 10号实现键盘字符串输入。31.一般 DOS 系统功能调用步骤是:(1)_;(2)_;(3)_。答案:送 DOS 子功能号到 AH 寄存器;置入口参数; INT 21H 软中断调用。32.标号和变量所具有的三种属性分别为_属性,_属性和_属性.答案:段、偏移量、类型。33.AX、BX、CX、DX 均为_位寄存器,也可分别作为两个_位
25、寄存器使用。答案:16、8。34.变址寄存器 SI、DI 均称为 _变址寄存器和_ 变址寄存器,在进行串操作时,常用_作源地址指针,_作目的地址指针。答案:源、目的、SI、DI。35.SP 寄存器常作为堆栈指针,用来存放堆栈区_地值的偏移地址。答案:栈顶。三实验题1.在汇编语言实验中常使用哪几种软件工具?这些软件工具的作用是什么?答案:在汇编语言实验中常使用 QE.EXE、MASM.EXE、LINK.EXE 三个软件工具。QE 是用来对源程序进行编辑录入的软件,存盘后的文件扩展名为.ASM;MASM 是用来对源程序进行汇编的软件,汇编后的文件扩展名为.OBJ;LINK 是用来对目的程序进行连接
26、的软件,连接后的文件扩展名为.EXE。2.当以会话方式调入连接程序时需要键入什么命令?连接程序调入后,用户必须逐行回答哪些提示?答案:当以会话方式调入连接程序时需要键入 LINK命令。连接程序调入后,用户必须首先回答待需要连接的目的程序名(.OBJ),然后确认可执行文件的文件名,以及是否需要建立内存图文件(.MAP)和是否需要与子程序库连接。3.当以会话方式调入汇编程序时需要键入什么命令?汇编程序调入后,用户必须逐行回答哪些提示?答案:当以会话方式调入汇编程序时需要键入 MASM命令。汇编程序调入后,用户必须首先回答源程序文件名(.ASM) ,然后确认目的程序文件名,以及是否需要建立列表文件和
27、CRF 文件。4.简述由汇编语言源程序到执行文件的处理过程。汇编程序调入后,用户必须逐行回答答案:源程序经编辑程序(如 QEEXE)编辑后,在磁盘上建立扩展名为.ASM 的文件并存盘;然后输入 MASM命令调汇编程序,逐行回答问题汇编源程序,汇编后的结果为目标程18序OBJ;然后再输入 LINK命令调连接程序,逐行回答问题,目标程序经连接程序连接装配后生成可执行文件EXE。四、简答题(每小题 2 分)1.请指出下述两条伪指令语句的区别。COUNT1 DB 48HCOUNT2 EQU 48H答案:第一条伪指令是定义字节变量,汇编后占据内存 1 个地址单元,该单元的数值是48H;第二条伪指令是定义
28、一个符号,不占据内存单元,该符号的引用值是 48H。2.请写出完成下列操作所选用的指令。将 AX 的内容减去 7A30H 和上次运算的借位。将变量名 TABL 的段地址送 AX。答案:SBB AX,7A30H。MOV AX,SEG TABL。3.下列语句在存储器中分别为变量数据区分配多少个字节单元?VAR1 DD 10VAR2 DW 4 DUP(?),2答案: 4; 10。4.在指令系统中,段内、段间返回均为 RET 指令。试回答:执行段内返回 RET 指令时,执行的操作是( )。执行段间返回 RET 指令时,执行的操作是( )。答案: 从堆栈弹出 1 个字送 IP 寄存器;从堆栈弹出第 1
29、个字送 IP 寄存器,接着弹出第 2 个字送 CS 寄存器。5.下面两条语句有何区别?X EQU 1000HY=1000H答案:用 EQU 对一个符号只能定义一次,无先定义后使用的规则;=号伪指令可对同一符号定义多次,但必须先定义后使用。6.有符号定义语句如下:ARRAY1 DB 3, 6, 9,123ARRAY2 DB 0L EQU ARRAY2-ARRAY1问 L 的值是多少?答案:L 的值是 6。7.请指出下述两条伪指令语句的区别。COUNT1 DW 1234HCOUNT2 DB 12H, 34H答案: 在内存中的存放顺序为:34H、12H,12H 占高地址;在内存中的存放顺序为:12H
30、、34H,34H 占高地址。8.分别指出下列指令中源操作数的寻址方式:(1)AND AX, 0FFH(2)MOV CX, COUTSI(3)MOV AX, DI(4)ADD AX, BXDI答案:(1)立即数寻址;(2)寄存器相对寻址;(3)寄存器间接寻址;(4)基址变址寻址。9.根据要求写出汇编语言的指令。19用寄存器 BX 和位移量 20H 的寄存器相对寻址方式,把存储器中的一个字与 CX 寄存器相加,并把结果送回存储器单元中。把数 0F9H 与(AL)相加,结果送回 AL 中。答案:ADD 20HBX,CX;ADD AL,0F9H。 。五、程序分析题(每小题 5 分,共 35 分)1.假
31、设数据区有:DA1 DB 56HDA2 DB 34HDA3 DB ?DA4 DB ?下列程序段完成的功能是什么?程序段执行后 DA3、DA4 字节单元的内容是什么?MOV AL,DA1ADD AL,DA2JO NEXTMOV DA3,ALMOV DA4,0JMP EXITNEXT: MOV DA4,1EXIT: MOV DA3,0答案:该程序段的功能:将 DA1、DA2 两单元的带符号数相加,如发生溢出,将 DA4 单元置 1、DA3 单元置零;如不发生溢出则将和存入 DA3 单元,DA4 单元置零。程序段执行后DA3、DA4 字节单元的内容分别为 0、1。2.已知(AX)=FFFEHINC
32、AXDEC AXINC AXNEG AX上述几条指令执行后, (AX)=( )。答案:+1(或 1)3.下述程序段完成什么功能?程序段执行后 AX 寄存器的内容是多少?MOV AX,2MOV DX,AXSAL AX,1SAL AX,1ADD AX,DXSAR AX,1答案:程序段用算术左右移位指令完成乘除法运算;程序段执行后 AX 的内容是:54.设(BX)=A6D1H,指令:MOV CL,7SHR BX,CL执行后, (BX)=( ) 。答案:014DH205.下述程序段执行后,AL 的内容是什么?MOV AX,00FFHAND AX,0FFFHOR AX,0F0FHXOR AX,00FFH
33、答案:AL=00H6.设寄存器 AL=45H,BL=76H,CL=85HXOR AL,0FHAND BL,0FH OR CL,0FH执行上述指令序列后,AL=( ) ,BL=( ),CL( ) 。答案:AL= 4AH ,BL= 06H ,CL= 8FH7.现有程序段如下:MOV AX, 01HMOV BX, 02HMOV CX, 03HLOP:INC AXADD BX, AXSHR AX,1LOOP LOP上述程序段执行后 AX,BX,CX 寄存器的值分别是多少?答案:AX=1,BX=8,CX=08.已知(SP)=2000H,(SS)=5000H,(52000H)=4500H,(DS)=400
34、0H,(BX)=1200H,则 POP BX指令执行完后, (SP)=( )。,(41200H)=( )(一个字的内容)。答案:(SP)=01FFEH,(41200H)=4500H9.设 AH=0AFH, CF=1MOV DH, 80XOR DH, 0FFHSBB AH,DH上述程序段执行后, (AH)=( ),CF=( )。答案:AH=(0FFH),CF=( 1 )10.问:(1)如下程序完成的功能是什么?(2)程序执行后(AL)=( ) 。XOR AL,ALMOV BL,1MOV CX,5LOP:ADD AL,BLINC BLINC BLLOOP LOP答案:完成前 5 个奇数的累加;(A
35、L)=2511.若(AX)=0A33AH,DX=0F0FH,AND AH ,DL21XOR AL ,DHNEG AHNOT AL上述程序段执行后,AX 寄存器中的内容是多少?答案:AX=0FDCAH12.设(AL)=87H , (CX)=203H , CF=0SAR AL ,CLXCHG CH ,CLSHL AL ,CL上述程序段执行后, (AL)=( ),(CF)=( ).答案:(AL)=( 0COH ),(CF)=( 1 ).13.已知数据定义如下:DA1 DW 1384H,2578HDA2 DW 9087HMOV AX, DA1MOV DX , DA1+2DIV DA2请问上述程序段完成
36、什么功能?答案:完成 DA1 的双字数据除以 DA1 单字数据的运算。六程序填空1.下列程序段完成:2+4+20 共 10 个偶数的累加和。请将程序段补充完整(每一空白处只填一条指令) 。DATA SEGMENTSUM DW ?DATA ENDSXOR AX,AX_MOV BX,2LOP1: ADD AX,BXINC BXINC BX_MOV SUM,AX答案:MOV CX,10;LOOP LOP12.下列程序段完成功能:判断 AX 中的值是否大于等于 0。若大于等于 0,则将 CF 置1;否则,将 CF 置 0。请再空白处填上适当的指令(每一空白处只填一条指令) 。CMP AX,0_CLC_
37、LAB: _EXTI: HLT答案:JGE LAB; JMP EXT1; STC3.下列程序段完成 20 个字数据的累加并把和存入 SUM 中。试在空白处填上适当的指22令(每一空白处只填一条指令) 。ARRAY DW a1,a2,a20SUM DW ?XOR AX, AXMOV CX, 20LOP: ADD AX,BXINC BXINC BXMOV SUM,AX答案:LEA BX, ARRAY; LOOP LOP。4.如下程序段的功能是把 BX 中的各个二进制位颠倒次序后还放回 BX 中。请在空别处填上合适的指令。MOV AX,BX_ again: SHL AX,1_Loop againHL
38、T答案:MOV CX, 16; RCR BX,1。5. 如下程序段的功能是统计 AX 中的字型数据包含有多少个 1 和多少个 0,DH 中放 1 的个数,DL 中放 0 的个数。请在空别处填上合适的指令。XOR DX,DXMOV CX,16Again:ROL AX,1_INC DL_lab1: INC DHlab2: Loop againHLT答案:JC lab1; JMP lab2。6.如下程序段的功能是将放于 AL 寄存器中的一位十六制数转换为相应的 ASCII 码。请在空别处填上合适的指令。CMP AL,9_ ADD AL,07Hlab1: _答案:JBE lab1; ADD AL,30
39、H。7.如下程序段的功能是完成将 ARRAY 开始的 200 个字数据的每个字数据加 1 操作(不考虑溢出) 。请在空别处填上合适的指令。MOV CX , 200_23LOP1: INC WORD PTR SI_LOOP LOP1答案:LEA SI,ARRAY;ADD SI,2.8.下列程序段实现 1+2+3.+100 的累加和。试在空白处填上适当的指令。_MOV AX,1MOV BX,2LOP: ADD AX,BXINC BX_答案: MOV CX, 99; LOOP LOP。七程序设计题1.编写完整程序,从键盘读入一个符号串,把各符号颠倒顺序后在下一行输出。DATA SegmentBUF
40、db 80 , 81 DVP(0)DATA endsCODE SegmentAssume cs :CODE,DS:DATAMain:MOV AX,DATAMOV DS,AXLEA DX,BUFMOV AH,10INT 21HMOV BL,BUF+1MOV BH,0MOV BUF+BX+2,24HMOV BUF+1,10LEA SI,BUF+2LEA DI,BUF+BX+1SHR BX,1MOV CX,BXLOP1:MOV AL,SIXCHG AL,DIMOV SI,ALINC SIINC DILOOP LOP1LEA DX,BUF+1MOV AH,9INT 21HMOV AH,4CHINT 2
41、1H24CODE ENDSEND Main2.以 ARAAY 为起始地址的字节存储单元中存放有 N 个有符号数据,请编写完整程序找出其中最大值和最小值分别送入 BL 和 AL 寄存器中。DATA SEGMENTARRAY DB 25,1,78,N 个有符号数字COUT EQU $ARRAYDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,ARRAYMOV CX,COUTMOV AL,SIMOV AH,SIDEC CXagain: INC SICMP AL,SIJLE Next1MOV AL,S
42、INext1:CMP AH,SIJGE Next2MOV AH,SINext2:loop againMOV AH , 4CHINT 21HCODE ENDSEND START3.编写一个将 STR 字符串加密的子程序,串长在 CX 中,加密码在 AL 中。 (说明:将一个字符加密,就是把该字符异或一个加密码)答案的子程序如下:SCRT_STR PROC NearPUSHFLEA SI,STRagain: XOR SI,ALINC SIloop again POPFRETSCRT_STR endp4.编写完整程序,把从键盘读入的字母(如果是小写字母转换成大写字母,是大写字母转换成小写字母)在下一
43、行输出,要求把回车换行操作编写成子程序。255.试编写一程序段,把 DX:AX 中的无符号双字乘以 16(用移位指令实现,不计溢出) 。MOV CX,4Again: SHL AX,1RCL DX,1LOOP again6.试编写一程序段完成将 AX 和 BX 中的两个带符号数相加,和存于 BX。如果没有溢出,转移到 OK 处将 AL 置 1;否则将 AL 置为 0FFH。ADD BX,AXJNO OKMOV AL,0FFHJMP EXIT1OK:MOV AL,1EXIT1:HLT7.试编写完整程序,将数据段中 ARRAY 开始的字节单元中的 10 个数字0,1,2,3,4,5,6,7,8,9,
44、转换成相应的 ASCII 码送入以 ASC 开始的内存单元并在屏幕输出这个字符串。DATA SEGMENTARRAY DB 0,1, ,2,3,4,5,6,7,8,9ASI DB 10 DUP(?),24HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,ARRAYLEA DI,ASIMOV CX,10LOOP1:MOV AL,SIADD AL,30HMOV DI,ALINC SIINC DILOOP LOOP1LEA DX,ASIMOV AH,9INT 21HMOV AH,4CHINT 21
45、HCODE ENDSEND START8.编写完整程序,用串送存指令将 STR 开始的 100 个内存单元清零。DATA SEGMENTSTR DB 64H DUP(?)DATA ENDS26CODE SEGMENTASSUME CS:CODE, ES:DATAMAIN: MOV AX, DATAMOV ES, AXLEA DI, STRMOV CX, 100CLDMOV AL, 0REP STOSBMOV AH, 4CHINT 21HCODE ENDSEND MAIN9.编写程序段完成下列算式:+1 X0Y= 0 X=01 X0CMP x,0JG lab1JL lab2MOV Y,0Jmp exit1lab1::MOV Y,1JMP exit1lab2:MOV Y, OFFhexit1::HLT10.用串比较指令编写程序段,检测 DS 段的 Str1 和 Str2 两块存储区中存放的字数组是否相等,如相等,则将 AL 置为 1,如不相等,则将 AL 置为-1.并已知两块存储区的字长相等且置于DS 段的 StrLen 字变量中。PUSH DSPOP ESLEA SI,Str1LEA DI,Str2MOV CX, StrLenCLDREPE CMPSWJE LABMOV AL, 0FFHJMP EXIT1LAB: MOV AL, 1EXIT1: HLT