2022年2022年汇编语言程序设计课后习题解答 .pdf

上传人:C****o 文档编号:33376233 上传时间:2022-08-10 格式:PDF 页数:40 大小:302.52KB
返回 下载 相关 举报
2022年2022年汇编语言程序设计课后习题解答 .pdf_第1页
第1页 / 共40页
2022年2022年汇编语言程序设计课后习题解答 .pdf_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《2022年2022年汇编语言程序设计课后习题解答 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年汇编语言程序设计课后习题解答 .pdf(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、汇编语言程序设计 (宋人杰主编)课后习题解答第 1 章 汇编语言基础知识1简述汇编语言源程序、汇编程序、和目标程序的关系。答: 用汇编语言编写的程序称为汇编源程序;汇编源程序在汇编程序的翻译下转换成计算机语言变成目标程序。2. 简述汇编语言的优缺点。答: (1) 汇编语言的优点:可有效地访问、 控制计算机各种硬件设备,如磁盘、 存储器、 CPU、I/O 端口等。 . 目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。可与高级语言配合使用,应用十分广泛。(2) 汇编语言的缺点:通用性和可移植性较差相对于高级语言来说较繁锁、易出错、不够直观。3CPU 的寻址能力为8KB ,那么它的地址总

2、线的宽度为多少?答: 13 4. 1KB 的存储器有多少个存储单元? 答: 1024 个字节。5. 指令中的逻辑地址由哪两部分组成?答: 指令中的逻辑地址由段基址和偏移量组成。6. 以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。(1) 12F8:0100 (2) 1A2F:0103 (3) 1A3F:0003 (4) 1A3F:A1FF答: (1) 13080H (2) 1A3F3H (3) 1A3F3H (4) 245EFH7. 自 12FA:0000 开始的内存单元中存放以下数据(用十六进制形式表示): 03 06 11 A3 13 01, 试分别写出12FA:0002

3、的字节型数据、字型数据及双字型数据的值。答:字节型数据:11H字型数据: 0A311H双字型数据:0113A311H8. 内存中某单元的物理地址是19318H,段基地址为1916H,则段内偏移地址为多少?若段内偏移地址为2228H,则段基地址为多少?答: 若段基地址为1916H,则段内偏移地址为01B8H;若段内偏移地址为2228H,则段基地址为 170FH9. 在实模式环境中,一个段最长不能超过多少字节?答: 64KB10. 实模式可寻址的内存范围是多少?答: 1MB 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整

4、理 - - - - - - - 第 1 页,共 40 页 - - - - - - - - - 第 2 章 汇编语言源程序格式1请解释变量和标号的含义,两者有何区别?答: 标号代表一条指令所在单元的地址,在代码段中定义;变量是存放数据的存储单元的地址符号名,在除代码段以外的其他段中定义。变量和标号的主要区别在于变量指的是数据,而标号则对应的是指令。2. 变量和标号有什么属性?答:都具有三种属性:段属性、偏移属性和类型属性3. 伪指令语句与指令语句的区别是什么?伪指令有什么用途?答: 伪指令并不像指令语句那样在程序运行期间由计算机自动执行,而是在汇编程序对源程序汇编期间由汇编程序处理的操作。伪指令

5、可以完成如处理器选择、定义程序模块、数据定义、存储区分配、指示程序开始和结束等功能。4. 数值返回运算符有哪几种?简述LENGTH 和 SIZE 的区别。答:数值返回运算符包括:SEG( 取段地址 ) 、OFFSET( 取偏移地址 ) 、TYPE( 取类型值 ) 、LENGTH (取长度 ) 、SIZE (取总字节数 ) 。对于变量中使用DUP 的情况, LENGTH回送分配给该变量的单元数,对于其他情况则送1;而 SIZE 会送分配给变量的总字节数,也就是 LENGTH 和 TYPE 的乘积。5. 画图说明下列伪指令所定义的数据在内存中的存放形式。 (1) ARR1 DB 6,34H,-7

6、(2) ARR2 DW 3C5DH,1,? (3) ARR3 DB 2 DUP(1,2,DUP(2,5),3) (4) ARR4 DB HELLO (5) ARR% DB 1234答: (1) 见题图 2.1 06H34HF9HARR1题图 2.1 (2) 见题图 2.2 00HARR201H3CH5DH- - -题图 2.2(3) 见题图 2.3 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 40 页 - - - - - - - - - 02HARR305H02H01

7、H05H03H02H05H02H01H05H03H题图 2.3(4) 见题图 2.4 4CHARR44CH45H48H4FH题图 2.4 (5) 题图 2.5 34HARR533H32H31H题图 2.56. 写出下列变量定义语句。(1) 为缓冲区BUF1 预留 20B 的存储空间。(2) 将字符串 ABCD ,1234存放于 BUF2 存储区中。答: (1) BUF1 DB 20 DUP(?) (2) BUF2 DB ABCD DB 12347. 符号定义语句如下: BUF DB 2,3,4,5,345 EBUF DB 8 LT DB EQU EBUF-BUF 问 LT 的值是多少?答:LT

8、 的值为 7 8. 假设程序中的数据定义如下: A DW ? B DB 16 DUP(?) C DD ? T EQU $-A 问 T的值是多少?它表示什么意义?名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 40 页 - - - - - - - - - 答: T 的值是 22;它表示从变量A 到 T 之间分配的存储空间(字节)数目。9. 如何规定一个程序执行的开始位置?主程序执行结束应该如何返回DOS?源程序在何处停止汇编过程?答: 程序开始位置: END 伪指令后的标号

9、所对应的地址;应用程序开始伪指令. STARTUP 处。返回 DOS:RET 指令结合PUSH DS 等指令; 用 DOS 功能调用的第4CH 号中断; . EXIT伪指令。END 伪指令处停止汇编过程。10. EQU 伪指令与“ =”伪指令有何区别?答:在同一程序中, “=”伪指令可对一个符号重复定义11. 指出下列伪指令表达方式的错误,并改正之。 (1) DATA SEG (2) SEGMENT CODE (3) MYDATA SEGMENT DATA ENDS (4) MAIN PROC FAR END MAIN MAIN ENDP 答: (1) SEG 改为 SEGMENT (2) 没

10、有段名 (3) DATAENDS 改为 MYDA TAENDS (4) END MAIN 删除第 3章8086/8088 寻址方式及指令系统1 什么是寻址方式, 8086/8088 微处理器有几种寻址方式,各类寻址方式的基本特征是什么?答: 寻址方式就是寻找指令中操作数的方式,或寻找指令转移目的地址的方式。8086/8088 微处理器的寻址方式分为数据寻址方式和程序转移寻址方式。数据寻址方式主要包括立即数寻址方式、寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、寄存器相对寻址方式、基址变址寻址方式和相对基址变址寻址方式;程序转移寻址方式主要包括段内直接寻址、段内间接寻址、段间直接寻址、段间间

11、接寻址。立即数寻址:操作数就在指令中,作为指令的一部分,跟在操作码后存放在代码段。寄存器寻址:操作数在寄存器中,指令中指定寄存器号。直接寻址方式:操作数在存储器中,指令直接包含操作数的有效地址EA。寄存器间接寻址:操作数在存储器中,操作数的有效地址在SI,DI,BX,BP这 4 个寄存器之一中。寄存器相对寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器( BX,BP) 或变址寄存器 ( SI,DI ) 的内容加上8 位或 16 位的位移之和。基址变址寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器( BX,BP) 加上变址寄存器 (SI,DI ) 的内容。相对基址变址寻址:操作

12、数在存储器中,操作数的有效地址是一个基址寄存器( BX,BP)和变址寄存器( SI,DI ) 的内容加上8 位或 16 位的位移之和。段内直接寻址:转向的有效地址是当前IP 寄存器的内容和指令中指定的8 位或 16 位位移量之和。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 40 页 - - - - - - - - - 段内间接寻址:转向的有效地址是一个寄存器或是一个存储单元的内容。段间直接寻址:在指令中直接提供了转向段地址和偏移地址。段间间接寻址:用存储器里的两个相继

13、字的内容来取代IP 和 CS 寄存器中的原始内容,以达到段间转移的目的。2. 假 定 (DS)=1000H,(SI)=007FH,(BX)=0040H,(BP)=0016H,变 量TABLE的 偏 移 地 址 为0100H,试指出下列指令的源操作数字段的寻址方式,它的有效地址( EA) 和物理地址 ( PA)分别是多少? (1) MOV AX,1234H (2) MOV AX,TABLE (3) MOV AX,BX+100H (4) MOV AX,TABLEBPSI 答: (1) 直接寻址, EA=1234H ,PA=11234H (2) 直接寻址, EA=0100H ,PA=10100H (

14、3) 寄存器相对寻址, EA=0140H , PA=10140H(4)相对基址变址寻址, EA=0195H , PA=10195H 3. 若 TABLE 为数据段0032 单元的符号名,其中存放的内容为1234H,试问下列两条指令有什么区别?执行完指令后,AX 寄存器的内容是什么? MOV AX,TABLE LEA AX,TABLE 答: 第一条指令是取0032 单元的内容,执行完后AX 的内容是1234H第二条指令是取TABLE 的偏移地址,执行完后AX 的内容为0032H4. 指出下列指令的错误。(1) MOV CX,DL (2) MOV IP,AX (3) MOV ES,1234H (4

15、) MOV ES,DS (5) MOV AL,300H (6) MOV SP,AX (7) MOV AX,BX+DI (8) MOV 20H,AH 答: (1) 两操作数长度不一致 (2) 目的操作数不能为IP (3) 立即数不能直接送段寄存器 (4) 两个段寄存器之间不能直接进行数据传送 (5) 两操作数长度不一致 (6) SP 不能用作间址寄存器 (7) BX+DI 改为 BXDI或BX+DI (8) 目的操作数不能为立即数5. 指出下列指令的错误。(1) POP CS (2) SUB SI,DI (3) PUSH AH (4) ADC AX,DS (5) XCHG SI,30H (6)

16、OUT DX,AH (7) IN AL,3FCH (8) MUL 5 答: (1) POP 指令不允许使用CS名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 40 页 - - - - - - - - - (2) 两操作数不能同时是存储器寻址方式 (3) 堆栈的操作必须以字为单位 (4) 段寄存器不允许直接参加运算 (5) XCHG 指令的操作数不允许是立即数 (6) OUT 指令只能用AL 做源操作数 (7) 端口号大于255,必须将其放到DX 中 (8) MUL 指令源

17、操作数不允许是立即数6. 请分别用一条汇编语言指令完成如下功能。 (1) 把 BX 寄存器和DX 寄存器的内容相加,结果存入DX 寄存器。 (2) 用寄存器BX 和 SI 的基址变址寻址方式把存储器的一个字节与AL 寄存器的内容相加,并把结果送到AL 中。 (3) 用 BX 和位移量 0B2H 的寄存器相对寻址方式把存储器中的一个字和CX 寄存器的内容相加,并把结果送回存储器中。 (4) 把数 0A0H 与 AL 寄存器的内容相加,并把结果送回AL 中。答: (1)ADD DX,BX (2)ADD AL,BX+SI (3)ADD BX+0B2H,CX (4)ADD AL,0A0H 7. 求出以

18、下各十六进制数与十六进制数58B0 之和,并根据结果设置标志位SF、ZF、CF和 OF 的值。(1) 1234H (2) 5678H (3) 0AF50H (4) 9B7EH 答: (1) 和为 6AE4H,SF=0,ZF=0,CF=0, OF=0 (2)和为 0AF28H,SF=1, ZF=0, CF=0, OF=1 (3)和为 0800H, SF=0, ZF=0, CF=1, OF=0 (4)和为 0F42EH, SF=1, ZF=0, CF=0, OF=08. 执行指令ADD AL ,72H 前, (AL)=8EH ,标志寄存器的状态标志OF、SF、ZF、AF、PF和 CF 全为 0,指

19、出该指令执行后标志寄存器的值。答: 指令执行后, AL 的内容为0000000H,且有进位, 标志寄存器中各标志位的值为:OF=0,SF=0,ZF=1,AF=1,PF=1,CF=19. 已知程序段如下: MOV AX,1234H MOV CL,4 ROL AX,CL DEC AX MOV CX,4 MUL CX 试问: 1、每条指令执行完后,AX 的内容是什么?2、每条指令执行完后,CF、SF 和 ZF 的值是什么?3、程序执行完后,AX 和 DX 的内容是什么?答: (1) (2)MOV AX,1234H ; (AX)=1234H,各标志位不变名师资料总结 - - -精品资料欢迎下载 - -

20、 - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 40 页 - - - - - - - - - MOV CL ,4 ; (AX)=1234H,各标志位不变ROL AX,CL ; (AX)=2341H,CF=1,其它标志位不变DEC AX ; (AX)=2340H,CF不变, SF=0 ,ZF=0 MOV CX,4 ; (AX)=2340H,各标志位不变MUL CX ; (AX)=8D00H,CF=0,ZF=0,SF=0 (3) 程序执行完后,(AX)=8D00H,(DX)=0000H10. 编程序段,将AL、BL 、CL

21、、DL 相加,结果存在DX 中。答: MOV AH,0 ADD AL,BL ADC AH,0 ADD AL,CL ADC AH,0 ADD AL,DL ADC AH,0 MOV DX,AX 11. 编程序段,从AX 中减去 DI ,SI 和 BP 中的数据,结果送BX。答: SUB AX,DI SUB AX,SI SUB AX,BP MOV BX,AX 12. 假设 (BX)=0E3H , 变量VALUE 中存放的内容为79H,确定下列各指令单独执行后的结果。 (1) OR BX,VALUE (2) AND BX,VALUE (3) XOR BX,OFFH (4) AND BX,01H (5)

22、 TEST BX,05H (6) XOR BX,VALUE 答: (1) (BX)=0FBH (2) (BX)=61H (3) (BX)=1CH (4) (BX)=01H (5) (BX)=0E3H (6) (BX)=9AH 13. 已知数据段500H600H 处存放了一个字符串,说明下列程序段执行后的结果。MOV SI,600H MOV DI,601H MOV AX,DS MOV ES,AX MOV CX,256 STD REP MOVSB 答:将数据段501H600H 中存储的字符串移到数据段502601H 中14. 说明下列程序段的功能。名师资料总结 - - -精品资料欢迎下载 - -

23、- - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 40 页 - - - - - - - - - CLD MOV AX,0FEFH MOV CX,5 MOV BX,3000H MOV ES,BX MOV DI,2000H REP STOSW 答:将附加段的32000H 开始的连续5 个字初始化为0FEFH15. 判断下列程序段跳转的条件。 (1) XOR AX,1E1EH JE EQUAL (2) TEST AL,10000001B JNZ THERE (3) CMP CX,64H JB THERE 答: (1) AX 中的

24、值为1E1EH 时会跳转 (2) AL 的最低和最高位至少有一位为1 时发生跳转(3) CX 中的值小于64H 时发生跳转16. 选取正确指令,完成以下任务。 (1) 右移 DI 三位,并将0 移入最左一位。(2) AL 内容左移一位,0 移入最后一位。(3) DX 寄存器右移一位,并且使结果的符号位与原符号位相同。答: (1) MOV CL,3 SHR DI,CL (2) SHL AL,1(3) SAR DX,1 17. 假设 AX 和 SI 存放的是有符号数,DX 和 DI 存放的是无符号数,请用比较指令和条件转移指令实现以下判断。 (1) 若 DXDI ,转到 ABOVE 执行 (2)

25、若 AXSI ,转到 GREATER 执行。 (3) 若 CX=0 ,转到 ZERO 执行 (4) 若 AX-SI 产生溢出,转到OVERFLOW 执行。 (5) 若 SIAX ,转到 LESS_EQ 执行。 (6) 若 DIDX,转到 BELOW_EQ 执行。答: (1) CMP DX,DI JA ABOVE (2) CMP AX,SI JG GREATER (3) CMP CX,0 JE ZERO (4)CMP AX,SI JO OVERFLOW (5) CMP AX,SI JGE LESS_EQ (6) CMP DX,DI JAE BELOW_EQ 18. 有一个首地址为ARRAY 的

26、20 个字数组,说明下列程序段的功能。 MOV CX,20 MOV AX,0 MOV SI,AX 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 40 页 - - - - - - - - - SUM_LOOP: ADD AX,ARRAYSI ADD SI,2 LOOP SUM_LOOP MOV TOTAL,AX 答:将首地址为ARRAY 的 20 个字数组元素求和,将结果存放到TOTAL 单元22. 已知内存中起始地址为BLOCK 的数据块(字节数为COUNT )的字节数

27、据有正有负。试编写一个程序,将其中的正、负分开,分别送至同一段中的两个缓冲区,设正、负缓冲区的首地址分别为PLUS 和 MINUS 。答: DATA SEGMENT BLOCK DB 16 DUP(?) PLUS DB 16 DUP(?) MINUS DB 16 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,OFFSET BLOCK MOV DI,OFFSET PLUS MOV BX,OFFSET MINUS MOV CX,COUNT NEXT:MOV AL,SI

28、TEST AL,80H JNZ MD MOV DI,AL INC DI JMP AGAIN MD: MOV BX,AL INC BX AGAIN: INC SI LOOP NEXT MOV AH,4CH INT 21H CODE ENDS END START 19. 按照下列要求,编写相应的程序段。 (1) 已知字符串STRING 包含有 32KB 内容,将其中的“$”符号替换成空格。 (2) 有一个 100 个字节元素的数组,其首地址为ARRAY ,将每个元素减1(不考虑溢出)存于原处。 (3) 统计以“ $”结尾的字符串STRING 的字符个数 (4) 假设从 B800H:0 开始存放有1

29、6 个 16 位无符号数,编程求它们的和,并把32 位的和保存在DX 、 AX 中。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 40 页 - - - - - - - - - 答: (1) MOV SI,0 MOV CX,8000H AGAIN:CMP STRINGSI,$ JNZ NEXT MOV STRINGSI,20H NEXT:INC SI LOOP AGAIN (2)MOV SI,0 MOV CX,100 AGAIN:DEC ARRAYSI INC SI LO

30、OP AGAIN (3)XOR SI,SI COMP:CMP STRINGSI,$ JE OVER INC SI JMP COMP OVER:RET (4) MOV AX,0B800H MOV DS,AX XOR SI,SI XOR DX,DX MOV CX,0FH MOV AX,SI AGAIN:INC SI INC SI ADD AX,SI JNC NEXT INC DX NEXT:LOOP AGAIN RET 20. 编写程序,把ARRAY1 和 ARRAY2 中 20 个字节数分别相加,结果放到TABLE 中。 (1) 假定数据为无符号数,如果结果大于255 则结果为255。 (2)

31、假定结果为带符号数,如果有溢出则保存结果为0。答: (1) DATA SEGMENT ARRAY1 DB 20 DUP(?) ARRAY2 DB 20 DUP(?) TABLE DB 20 DUP(?) DATA ENDS 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 40 页 - - - - - - - - - CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CX,20 MOV

32、SI,0 AGAIN:MOV AL,ARRAY1SI ADD AL,ARRAY2SI JC LABEL1 MOV TABLESI,AL JMP LABEL2 LABEL1:MOV TABLESI,255 LABEL2:INC SI LOOP AGAIN MOV AH,4CH INT 21H CODE ENDS END START (2) DATA SEGMENT ARRAY1 DB 20 DUP(?) ARRAY2 DB 20 DUP(?) TABLE DB 20 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX

33、,DATA MOV DS,AX MOV CX,20 MOV SI,0 AGAIN:MOV AL,ARRAY1SI ADD AL,ARRAY2SI JO LABEL1 MOV TABLESI,AL JMP LABEL2 LABEL1:MOV TABLESI,0 LABEL2:INC SI LOOP AGAIN MOV AH,4CH INT 21H CODE ENDS END START 21. 字符串 ATR1 保存着 100个字节的 ASCII 码, 试编写一个程序统计该字符串中空格(20H)的个数。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -

34、- - - - - 名师精心整理 - - - - - - - 第 11 页,共 40 页 - - - - - - - - - 答: DATA SEGMENT ATR1 DB 100 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CX,100 XOR DI,DI XOR SI,SI COMP:CMP ATR1SI,20H INC SI JNE NEXT INC DI NEXT:LOOP COMP MOV AH,4CH INT 21H CODE ENDS END START

35、第 4章 顺序、分支与循环程序设计1试编写一个程序实现将从键盘输入的小写字母用大写字母形式显示出来。答: DATA SEGMENT STRMESSAGE DB “请输入小写字符” ,0DH , 0AH , $ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET STRMESSAGE MOV AH,9H INT 21H MOV AH,1 INT 21H MOV DL,AL SUB DL,20H MOV AH,2 INT 21H EXIT:MOV AH,4CH INT 21H

36、 CODE ENDS END START 2在内存 BUFFER 单元中定义有10 个 16 位数,试寻找其中的最大值及最小值,并放在指名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 40 页 - - - - - - - - - 定的存储单元MAX 和 MIN 中。答: DATA SEGMENT BUFFER DW 10 DUP(?) MIN DW ? MAX DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA STAR

37、T:MOV AX,DATA MOV DS,AX MOV BX,OFFSET BUFFER MOV AX,BX MOV DX,BX MOV SI,0 MOV CX,10 MM:MOV DI,BX+SI CMP AX,DI JB T1 JMP T2 T1:CMP DX,DI JB T11 JMP T21 T11:MOV DX,DI T21:JMP ENT T2: MOV AX,DI ENT:ADD SI,2 LOOP MM MOV MAX,DX MOV MIN,AX MOV AH,4CH INT 21H CODE ENDS END START 3统计字型变量DATBUF 中有多少位0,多少位 1,

38、并分别记入COUNT0 和 COUNT1 中。答: DATA SEGMENT DATBUF DW 1234H COUNT0 DB ? COUNT1 DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV BX,DATBUF 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 40 页 - - - - - - - - - AGAIN:CMP BX,0 JE EXIT

39、SHL BX,1 JNC ZERO INC COUNT1 JMP AGAIN ZERO:INC COUNT0 JMP AGAIN EXIT:MOV AH,4CH INT 21H CODE ENDS END START 4在 BUFFER 开始的单元中存放着一个字符串,请判断该字符串中是否存在数字,如有则将 X 单元置 1,否则置0。答: DATA SEGMENT BUFFER DB JAVA2COMPUTER N=$-BUFFER X DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX C

40、LD MOV CX,N XOR SI,SI AGAIN:CMP BUFFERSI,39H JA NEXT CMP AL,30H JB NEXT MOV X,1 JMP EXIT NEXT:INC SI LOOP AGAIN MOV X,0 EXIT:MOV AH,4CH INT 21H CODE ENDS END START 5设在变量单元A1、 A2、A3、 A4 中存放 4 个数,试编程实现将最大数保留,其余3 个数清零的功能。答: DATA SEGMENT A1 DB 3 A2 DB 7 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -

41、 - - - 名师精心整理 - - - - - - - 第 14 页,共 40 页 - - - - - - - - - A3 DB 9 A4 DB 8 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,0 MOV CX,3 MOV AL,A1SI MOV DI,0 NEXT:INC SI CMP AL,A1SI JNB NEXT1 MOV AL,A1SI MOV A1DI,0 MOV DI,SI JMP NEXT2 NEXT1:MOV A1SI,0 NEXT2:LOOP NEXT M

42、OV AH,4CH INT 21H CODE ENDS END START 6已定义了两个整数变量A 和 B,试编写程序完成下列功能。(1) 若两个数中有一个是奇数,则将奇数存入A 中,偶数存入B 中(2) 若两个数均为奇数,则将两数均加1 后存回原变量。(3) 若两个数均为偶数,则两个变量均不改变。答: DATA SEGMENT A DB 13H B DB 24H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,A MOV BL,B XOR AL,BL TEST AL,01H J

43、Z SAME TEST BL,01H JZ DONE XCHG BL,A 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 40 页 - - - - - - - - - MOV B,BL JMP DONE SAME:TEST BL,01H JZ DONE INC A INC B DONE:MOV AH,4CH INT 21H CODE ENDS END START 7试编制一个程序,求出首地址为DATA 的 100D 字数组中的最小偶数,并把它存入AX中。答: MYDAT

44、A SEGMENT DATA DW 100 DUP(?) NUM DB 100 MYDATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:MYDATA START:MOV AX,DATA MOV DS,AX MOV CX,NUM MOV SI,0 MOV AX,32766 AGAIN:TEST DATASI,1 JNZ NEXT COMPARE:CMP AX,DATASI JLE NEXT MOV AX,DATASI NEXT:ADD SI,2 LOOP AGAIN EXIT:MOV AH,4CH INT 21H CODE ENDS END START 8已知从符号

45、地址M 开始的内存单元中存放有15 个 16 位带符号数, 试编制一个程序,将正数依次存放在以符号地址P 开始的内存单元中,再将负数依次存放到以符号地址N 开始的内存单元中,并将整数和负数的个数显示出来。答: DATA SEGMENT M DW 15 DUP(?) P DW 15 DUP(?) N DW 15 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 40 页

46、 - - - - - - - - - START: MOV AX,DATA MOV DS,AX MOV CX,15 MOV SI,0 MOV BX,0 MOV DI,0 AGAIN:MOV AX,MSI CMP AX,0 JL STEP1 MOV PBX,AX INC BX JMP NEXT STEP1:MOV NDI,AX INC DI NEXT:INC SI LOOP AGAIN ;输出正负数据个数子程序 MOV AH,4CH INT 21H CODE ENDS END START 9已知数组A1 中包含有15 个互不相等的整数,数组 A2 中含有 20 个互不相等的整数,试编制一个程序,

47、把既在A1 又在 A2 中出现的整数存放在以符号地址为E 开始的内存单元中。答: DATA SEGMENT A1 DW 15 DUP(?) A2 DW 20 DUP(?) E DW 15 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CX,15 MOV SI,0 MOV DI,0 MOV BX,0 AGAIN:MOV DX,CX MOV AX,A1SI MOV DI,0 MOV CX,20 COMPARE:CMP AX,A2DI JE MATCH ADD DI,2 名师资

48、料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 40 页 - - - - - - - - - LOOP COMPARE JMP COMMON MATCH:MOV EBX,AX ADD BX,2 COMMON:ADD SI,2 MOV CX,DX LOOP AGAIN MOV AH,4CH INT 21H CODE ENDS END START 10. 已知有 N 个整数 a1,a2, ,an 已存放在从A 开始的内存单元中, 试编制一个程序将其中的负数删去,而把留下的正数依次

49、重新存放在从A 开始的内存单元中。分析:如果当前位置元素小于0,则将当前位置后面第一个大于0 的元素放到当前位置,同时将这一位置值置为-1 ;当该位置后面再没有大于0 的元素时,依次将后面各位置元素清 0 即可(假设初始时所有元素都不等于0)答: DATA SEGMENT A DW a1,a2,an N DB ($-A)/2 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,0 MOV DI,2 MOV CX,N AGAIN:MOV DX,CX MOV AX,ASI CMP AX,0

50、 JL LOOP1 JMP COMMON LOOP1:DEC CX NEXT:MOV AX,ADI COM AX,0 JG NEXT2 ADD DI,2 LOOP NEXT JMP EXIT ;后面已经没有正数,重新排序完毕 NEXT2:MOV ASI,AX MOV ADI,-1 COMMON:ADD SI,2 MOV DI,SI ADD DI,2 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 40 页 - - - - - - - - - MOV CX,DX LOOP

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁