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

上传人:无*** 文档编号:90869226 上传时间:2023-05-18 格式:PDF 页数:40 大小:4.22MB
返回 下载 相关 举报
汇编语言程序设计课后习题解答1.pdf_第1页
第1页 / 共40页
汇编语言程序设计课后习题解答1.pdf_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《汇编语言程序设计课后习题解答1.pdf》由会员分享,可在线阅读,更多相关《汇编语言程序设计课后习题解答1.pdf(40页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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

2、度为多少?答:1 34.1 K B 的存储器有多少个存储单元?答:1 0 2 4个字节。5 .指令中的逻辑地址由哪两部分组成?答:指令中的逻辑地址由段基址和偏移量组成。6 .以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。(1)1 2 F 8:0 1 0 0 (2)1 A 2 F:O1 O3 (3)1 A 3 F:OOO3 (4)1 A 3 F:A 1 F F答:(1)1 3 0 8 0 H(2)1 A 3 F 3 H(3)1 A 3 F 3 H(4)2 45 E F H7 .自 1 2 F A:0 0 0 0 开始的内存单元中存放以下数据(用十六进制形式表示):0 3 0 6

3、 1 1 A 3 1 30 1,试分别写出1 2 F A:0 0 0 2 的字节型数据、字型数据及双字型数据的值。答:字节型数据:U H字型数据:0 A 3 1 1 H双字型数据:0 1 1 3 A 3 1 I H8 .内存中某单元的物理地址是1 9 3 1 8 H,段基地址为1 9 1 6 H,则段内偏移地址为多少?若段内偏移地址为2 2 2 8 H,则段基地址为多少?答:若段基地址为1 9 1 6 H,则段内偏移地址为0 1 B 8 H;若段内偏移地址为2 2 2 8 H,则段基地址 为 1 7 0 F H9 .在实模式环境中,一个段最长不能超过多少字节?答:6 4K B1 0 .实模式可

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

5、指示程序开始和结束等功能。4 .数值返回运算符有哪几种?简述LENGTH和 SIZE的区别。答:数值返回运算符包括:SEG(取段地址)、OFFSET(取偏移地址)、TYPE(取类型值)、LENGTH(取长度)、SIZE(取总字节数)。对 于 变 量 中 使 用 D U P 的情况,LENGTH回送分配给该变量的单元数,对于其他情况则送1;而 SIZE会送分配给变量的总字节数,也就是LENGTH和 TYPE的乘积。5 .画图说明下列伪指令所定义的数据在内存中的存放形式。(1)(2)(3)(4)(5)答:A RR1A RR2A RR3A RR4A RR%D BD WD BD BD B6,3 4 H

6、,-73 C 5 D H,1,?2 D U P(1,2,D U P(2,5),3)见题图2.1H E L L O 1 2 3 4(2)见题图2.2题图2.2ARR106H34HF9H是 鹏2.11ARR25DH3CH01H00H二-1(3)见题图2.3A(4)见题图2.4ARR4 48H45H4CH4CH4FH题图2.4(5)题图2.5ARR5 31H32H33H34H题图2.56 .写出下列变量定义语句。(1)为缓冲区B U F 1 预留2 0 B 的存储空间。(2)将字符串,A B C D -2 3 4,存放于B U F 2 存储区中。答:B U F 1 D B 2 0 D U P(?)(

7、2)B U F 2 D B A B C D D B 1 2 3 4 7 .符号定义语句如下:B U F D B 2,3,4,5,3 4 5 E B U F D B 8L T D B E Q U E B U F-B U F问 E T 的值是多少?答:L T 的值为78 .假设程序中的数据定义如下:A D W?B D B 1 6 D U P(?)C D D?T E Q U$-A问T的值是多少?它表示什么意义?A答:T的值是2 2;它表示从变量A到 T之间分配的存储空间(字节)数目。9 .如何规定一个程序执行的开始位置?主程序执行结束应该如何返回D OS?源程序在何处停止汇编过程?答:程序开始位置:

8、END伪指令后的标号所对应的地址;应用程序开始伪指令.S T A RT U P处。返回D O S:R E T 指令结合P U S H D S 等指令;用 D O S 功能调用的第4 c H 号中断;.E X I T伪指令。END伪指令处停止汇编过程。1 0 .E Q U 伪指令与“=”伪指令有何区别?答:在同一程序中,“=”伪指令可对一个符号重复定义1 1 .指出下列伪指令表达方式的错误,并改正之。(1)D A T A S E G(2)S E G M E N T C O D E(3)M Y D A T A S E G M E N TIIID A T A E N D S(4)M A I N P

9、RO C F A RaiiE N D M A I NM A I N E N D P答:S E G 改为S E G M E N T(2)没有段名(3)D A T A E N D S 改为 M Y D A T A E N D S(4)E N D M A I N 删除第 3 章 8086/8088寻址方式及指令系统1.什么是寻址方式,8 0 8 6/8 0 8 8 微处理器有几种寻址方式,各类寻址方式的基本特征是什么?答:寻址方式就是寻找指令中操作数的方式,或寻找指令转移目的地址的方式。8 0 8 6/8 0 8 8 微处理器的寻址方式分为数据寻址方式和程序转移寻址方式.数据寻址方式主要包括立即数寻

10、址方式、寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、寄存器相对寻址方式、基址变址寻址方式和相对基址变址寻址方式;程序转移寻址方式主要包括段内直接寻址、段内间接寻址、段间直接寻址、段间间接寻址。立即数寻址:操作数就在指令中,作为指令的一部分,跟在操作码后存放在代码段。寄存器寻址:操作数在寄存器中,指令中指定寄存器号。直接寻址方式:操作数在存储器中,指令直接包含操作数的有效地址E A。寄存器间接寻址:操作数在存储器中,操作数的有效地址在S I,D 1,B X,B P 这 4个寄存器之一中。寄存器相对寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器(B X,B P)或变址寄存器(S I

11、,D I)的内容加上8 位 或 1 6 位的位移之和。基址变址寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器(B X,B P)加上变址寄存器(S L D I)的内容。相对基址变址寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器(B X,B P)和变址寄存器(S I,D I)的内容加上8 位 或 1 6 位的位移之和。A段内直接寻址:转向的有效地址是当前IP寄存器的内容和指令中指定的8 位 或 1 6位位移量之和。段内间接寻址:转向的有效地址是一个寄存器或是一个存储单元的内容。段间直接寻址:在指令中直接提供了转向段地址和偏移地址。段间间接寻址:用存储器里的两个相继字的内容来取代

12、IP和 C S 寄存器中的原始内容,以达到段间转移的目的。2.假 定(DS)=K)0 0 H,(SI)=0 0 7FH,(BX)=0 0 4 0 H,(BP)=0 0 1 6H,变量 TA BLE 的偏移地址为0 1 0 0 H,试指出下列指令的源操作数字段的寻址方式,它的有效地址(EA)和物理地址(PA)分别是多少?(1)MO V A X,1 2 3 4 H (2)MO V A X,TA BLE(3)MO V A X,BX+1 O O H (4)MO V A X,TA BLE BP SI答:(D 直接寻址,EA=1 2 3 4 H,PA=1 1 2 3 4 H(2)直接寻址,EA=O 1 O

13、 O H,PA=1 O 1 O O H(3)寄 存 器 相 对 寻 址,EA=0 1 4 0 H,PA=1 0 1 4 0 H(4)相 对 基 址 变 址 寻 址,EA=0 1 9 5 H,PA=1 0 1 9 5 H3 .若 T A B L E 为数据段0 0 3 2 单元的符号名,其中存放的内容为1 2 3 4 H,试问下列两条指令有什么区别?执行完指令后,AX寄存器的内容是什么?MO V A X,TA BLELEA A X,TA BLE答:第一条指令是取0 0 3 2 单元的内容,执行完后AX的内容是1 2 3 4 H第二条指令是取T A B L E 的偏移地址,执行完后AX的内容为0

14、0 3 2 H4 .指出下列指令的错误。(1)MO V CX,DL(2)MO V IP,A X(3)MO V ES,1 2 3 4 H(4)MO V ES,DS(5)MO V A L,3 0 0 H(6)MO V SP,A X(7)MO V A X,BX+DI(8)MO V 2 0 H,A H答:(1)两操作数长度不一致(2)目的操作数不能为IP(3)立即数不能直接送段寄存器(4)两个段寄存器之间不能直接进行数据传送(5)两操作数长度不一致(6)S P 不能用作间址寄存器(7)BX+DI 改为 BX DI 或 BX+DI(8)目的操作数不能为立即数5 .指出下列指令的错误。(1)PO P CS

15、(2)SU B SI,DI(3)PU SH A H(4)A DC A X,DS(5)X CHG SI,3 0 H(6)O U T DX,A HA(7)IN A L,3 FCII(8)MU L 5答:(1)P O P 指令不允许使用CS(2)两操作数不能同时是存储器寻址方式(3)堆栈的操作必须以字为单位(4)段寄存器不允许直接参加运算(5)X C H G 指令的操作数不允许是立即数(6)O U T 指令只能用AL 做源操作数(7)端口号大于2 5 5,必须将其放到D X中(8)M UL 指令源操作数不允许是立即数6.请分别用一条汇编语言指令完成如下功能。(1)把 B X寄存器和D X寄存器的内容

16、相加,结果存入D X寄存器。(2)用寄存器B X和 S1 的基址变址寻址方式把存储器的一个字节与AL 寄存器的内容相加,并把结果送到AL 中。(3)用 B X和位移量0 B2 H的寄存器相对寻址方式把存储器中的一个字和C X寄存器的内容相加,并把结果送回存储器中。(4)把数0 A 0 H 与 AL 寄存器的内容相加,并把结果送回AL 中。答:(l)A DD DX,BX(2)A DD A L,BX+SI(3)A DD BX+0 B2 H,CX(4)A DD A L,O A O H7.求出以下各十六进制数与十六进制数5 8 B 0 之和,并根据结果设置标志位SF、Z F、CF和 OF 的值。(1)

17、1 2 3 4 H(2)5 678 1 1(3)0 A F5 0 H(4)9 B7EH答:和为 6A E4 H,SF=0,Z F=0,CF=0,O F=0(2)和为 0 A F2 8 H,SF=1,Z F=0,CF=0,O F=1(3)和为 0 8 0 0 H,SF=O,Z F=0,CF=1,O F=0和为 0 F4 2 EH,SF=1,Z F=0,CF=0,O F=08 .执行指令A D D A L,7 2 H 前,(A L)=8 EH,标志寄存器的状态标志O F、SF、Z F、A F、P F 和 C F 全为0,指出该指令执行后标志寄存器的值。答:指令执行后,AL 的 内 容 为 0 0

18、0 0 0 0 0 H,且有进位,标志寄存器中各标志位的值为:O F=0,SF=0,Z F=1,A F=1,PF=1,CF=19 .已知程序段如下:MO V A X,1 2 3 4 HMO V CL,4RO L A X,CLDEC A XMO V CX,4MU L CX试问:1、每条指令执行完后,AX的内容是什么?2、每条指令执行完后,CF、S F 和 Z F 的值是什么?3、程序执行完后,AX和 D X的内容是什么?答:(1)(2)MO V A X,1 2 3 4 H;(A X)=1 2 3 4 H,各标志位不变MO V CL,4 ;(A X)=1 2 3 4 H,各标志位不变RO L A

19、X,CL;(A X)=2 3 4 1 H,CF=1,其它标志位不变DEC A X ;(A X)=2 3 4 0 H,CF 不变,SF=O,Z F=OMO V CX,4 ;(A X)=2 3 4 0 1 1,各标志位不变MU L CX ;(A X)=8 D0 0 H,CF=O,Z F=O,SF=O 程序执行完后,(A X)=8 D0 0 H,(DX)=0 0 0 0 H1 0.答:编程序段,将 A L、B L、C L、D L 相加,结果存在D X中。MO V A H,0A DD A L,BLA DC A ll,0A DD A L,CLA DC A H,0A DD A L,DLA DC A H,0

20、MO V DX,A X1 1.答:编程序段,从 AX中减去DI,SI和 B P 中的数据,结果送B X。SU B A X,DISU B A X,SISU B A X,BPMO V BX,A X1 2.果。假设(BX)=0 E3 H,变 量 V A L U E 中存放的内容为7 9 H,确定下列各指令单独执行后的结(1)O R BX,V A LU E(2)A ND BX,V A LU E(3)X O R BX,O FFH(4)A ND BX,0 1 H(5)TEST BX,0 5 H(6)X O R BX,V A LU E答:(1)(BX)=O FBH(2)(BX)=61 H(3)(BX)=1

21、CH(4)(BX)=0 1 H(5)(BX)=0 E3 H(6)(BX)=9 A H1 3.已知数据段5 0 0 H-60 0 H处存放了一个字符串,说明下列程序段执行后的结果。MO V SI.60 0 HMO V DI,60 1 HMO V A X,DSMO V ES,A XMO V CX,2 5 6STDAREP MOVSB答:将数据段501H-600H中存储的字符串移到数据段502601H中14.说明下列程序段的功能。CLDMOV AX,OFEFHMOV CX,5MOV BX,3000HMOV ES,BXMOV DI,2000HREP STOSW答:将附加段的32000H开始的连续5个字

22、初始化为0FEFH15.判断下列程序段跳转的条件。(1)XOR AX,1E1EHJE EQUAL(2)TEST AL,10000001BJNZ THERE(3)CMP CX,64HJB THERE答:(1)A X中的值为1E1EH时会跳转(2)A L的最低和最高位至少有一位为1时发生跳转(3)C X中的值小于64H时发生跳转16.选取正确指令,完成以下任务。(1)右移D I三位,并将0移入最左一位。(2)A L内容左移一位,0移入最后-位。(3)D X寄存器右移一位,并且使结果的符号位与原符号位相同。答:(1)MOV CL,3SIIR DI,CL(2)SUL AL,1(3)SAR DX,11

23、7.假设A X和S I存放的是有符号数,D X和D I存放的是无符号数,请用比较指令和条件转移指令实现以下判断。(1)若 D XDL 转至ABOVE 执行(2)若 A XSL 转至ij GREATER 执行。(3)若C X=0,转到Z E R O执行(4)若A X-S I产生溢出,转到O V ER FLO W执行。(5)若 S1W A X,转至!|L E SS_E Q 执行。(6)若 D IW D X,转到 BELOW _EQ 执行。答:(1)CMP DX.DIJA ABOVE(2)CMP AX,SIJG GREATER(3)CMP CX,0JE ZERO(4)CMP AX,SIJO OVER

24、FLOW(5)CMP AX,SIJGE LESS_EQ(6)CMP DX.DIJAE BELOW_EQ1 8.有一个首地址为A R R A Y的20个字数组,说明下列程序段的功能。AM OV CX,20M OV AX,0M OV S I,AXS U M L OOP:ADD AX,AR R AY S I ADD S I,2L OOP S U M _ L OOPM OV T OT AL,AX答:将首地址为A R R A Y 的 20个字数组元素求和,将结果存放到T O T A L 单元2 2.已知内存中起始地址为B L O C K 的数据块(字节数为C O U N T)的字节数据有正有负。试编写一

25、个程序,将其中的正、负分开,分别送至同一段中的两个缓冲区,设正、负缓冲区的首地址分别为P L U S 和 M I N U S o答:DAT A S EG M EN TBL OCK DB 16 DU P(?)P L U S DB 16 DU P(?)M I N U S DB 16 DU P(?)DAT A EN DSCODE S EG M EN TAS S U M E CS:CODE,DS:DAT AS T AR T:M OV AX,DAT AM OV DS,AXM OV S I,OF F S ET BL OCKM OV DI,OF F S ET P L U SM OV BX,OF F S ET

26、 M I N U SM OV CX,COU N TN EX T:M OV AL,S I T ES T AL,80HJ N Z M DM OV DI ,ALI N C DIJ M P AG AI NM D:M OV BX ,ALI N C BXAG AI N:I N C S IL OOP N EX TM OV AH,4CHI N T 21HCODE EN DSEN D S T AR T19.按照下列要求,编写相应的程序段。(1)已知字符串S T R I N G 包含有3 2 K B 内容,将其中的“$”符号替换成空格。(2)有一个100个字节元素的数组,其首地址为A R R A Y,将每个元素减

27、1 (不考虑溢出)存于原处。(3)统计以“$”结尾的字符串S T R I N G的字符个数(4)假设从B800H:0开始存放有16个16位无符号数,编程求它们的和,并把32位的和保存在D X、A X中。答:M OV S I,0M OV CX,8000HAG AI N:CM PS T R I N G S I ,$J N ZN EX TM OV S T R I N G S I ,20HN EX T:I N C S IL OOP AG AI N(2)M OV S I,0M OV CX,100AG AI N:DEC AR R AY S I I N C S IL OOP AG AI N(3)X ORS

28、I,S ICOM P:CM PS T R I N G S I ,y$J EOVERI N C S IJ M PCOM POVER:R ET(4)M OV AX,0B800I IM OV DS,AXX ORS I,S IX OR DX,DXM OV CX,OF HM OV AX,S I AG AI N:I N C S II N C S IADD AX,S I J N C N EX TI N C DXN EX T:L OOP AG AI NR ET2 0.编写程序,把A R R A Y 1和A R R A Y 2中2 0个字节数分别相加,结果放到T A B L E中。(1)假定数据为无符号数,如果

29、结果大于255则结果为255。(2)假定结果为带符号数,如果有溢出则保存结果为0。答:DAT A S EG M EN TAR R AY 1 DB 20 DU P(?)AARRAY2 DB 20 DUP(?)TABLE DB 20 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,20MOV S I,0AGAIN:MOV AL,ARRAY1SIADD AL,ARRAY2SIJC LABEL1MOV TABLESI,ALJMP LABEL2LABEL1:MOV TABLESI,255L

30、ABEL2:INC SILOOP AGAINMOV AH,4CHINT 2111CODE ENDSEND STARTDATA SEGMENTARRAY 1 DB 20 DUP(?)ARRAY2 DB 20 DUP(?)TABLE DB 20 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,20MOV S I,0AGAIN:MOV AL,ARRAY1SIADD AL,ARRAY2SIJO LABEL1MOV TABLESI,ALJMP LABEL2LABEL1:MOV TABLES

31、I,0LABEL2:INC SILOOP AGAINMOV AH,4CHINT 21HCODE ENDSAEN D S T AR T2 1.字 符 串A T R 1保 存 着100个字节的AS CI I码,试编写一个程序统计该字符串中空格(2 0 H)的个数。答:DAT A S EG M EN TAT R 1 DB 100 DU P(?)DAT A EN DSCODE S EG M EN TAS S U M E CS:CODE,DS:DAT AS T AR T:M OV AX,DAT AM OV DS,AXM OV CX,100X OR DI,DIX OR S I,S ICOM P:CM P

32、AT R 1S I ,2OHI N C S IJ N E N EX TI N C DIN EX T:L OOP COM PM OV AH,4CHI N T 21HCODE EN DSEN D S T AR T第4章 顺序、分支与循环程序设计1.试编写一个程序实现将从键盘输入的小写字母用大写字母形式显示出来。答:DAT A S EG M EN TS T R M ES S AG E DB”请输入小写字符”,ODH,OAH,$DAT A EN DSCODE S EG M EN TAS S U M E CS:CODE,DS:DAT AS T AR T:M OV AX,DAT AM OV DS,AXM

33、OV DX,OF F S ET S T R M ES S AG EM OV AH,9HI N T 21HM OV AH,1I N T 21HM OV DL,ALS U B DL,20HM OV AH,2I N T 21HAEX I T:M OV AH,4CHI N T 21HCODE EN DSEN D S T AR T2.在内存BUFFER单元中定义有10个 16位数,试寻找其中的最大值及最小值,并放在指定的存储单元M AX和MIN中。答:DAT A S EG M EN TBU F F ER DW 10 DU P(?)M I N DW?M AX DW?DAT A EN DSCODE S EG

34、 M EN TAS S U M E CS:CODE,DS:DAT AS T AR T:M OV AX,DAT AM OV DS,AXM OV BX,OF F S ET BU F F ERM OV AX,BX M OV DX,BX M OV S I,0M OV CX,10M M:M OV DI,BX+S I CM P AX,DIJ B T 1J M P T 2T 1:CM P DX,DIJ B T i lJ M P T 21T 11:M OV DX,DIT 21:J M P EN TT 2:M OV AX,DIEN T:ADD S I,2L OOP M MM OV M AX,DXM OV M I

35、 N,AXM OV AH,4CHI N T 21HCODE EN DSEN D S T AR T3.统计字型变量DATBUF中有多少位0,多少位1,并分别记入COUNT。和COUNT1中。A答:DAT A S EG M EN TDAT BU F DW 1234HCOU N T O DB?C0U N T 1 DB?DAT A EN DSACODE S EG M EN TAS S U M E CS:CODE,DS:DAT AS T AR T:M OV AX,DAT AM OV DS,AXM OV BX,DAT BU FAG A I N:CM P BX,0J E EX I TS H L BX,1J

36、N C Z ER OI N C COU N T 1J M P AG AI NZ ER O:I N C COU N T OJ M P AG AI NEX I T:M OV AH,4CHI N T 21HCODE EN DSEN D S T AR T4.在BUFFER开始的单元中存放着一个字符串,请判断该字符串中是否存在数字,如有则将 X 单元置1,否则置0。答:DAT A S EG M EN TBU F F ER DB J AVA2C0M P U T ER N=$-BU F F ERX DB?DAT A EN DSCODE S EG M EN TAS S U M E CS:CODE,DS:DAT

37、 AS T AR T:M OV AX,DAT AM OV DS,AXCL DM OV CX,NX OR S I,S IAG AI N:CM P BU F F ER S I ,39HJ A N EX TCM P AL,30HJ B N EX TM OV X,1J M P EX I TN EX T:I N C S IL OOP AG AI NM OV X,0EX I T:M OV AH,4CHI N T 21HCODE EN DSEN D S T AR T5.设在变量单元Al、A2、A3、A 4 中存放4 个数,试编程实现将最大数保留,其余3 个数清零的功能。答:DAT A S EG M EN T

38、Al DB 3A2 DB 7A3 DB 9A4 DB 8DAT A EN DSCODE S EG M EN TAS S U M E CS:CODE,DS:DAT AS T AR T:M OV AX,DAT AM OV DS,AXM OV S I,0M OV CX,3M OV AL,Al S I M OV DI,0N EX T:I N C S ICM P AL,Al S I J N B N EX T 1M OV AL,Al S I M OV Al DI ,0M OV DI,S IJ M P N EX T 2N EX T 1:M OV Al S I ,0N EX T 2:L 00P N EX TM

39、 OV Al l,4CHI N T 21HCODE EN DSEN D S T AR T6.已定义了两个整数变量A 和 B,试编写程序完成下列功能。(1)若两个数中有一个是奇数,则将奇数存入A 中,偶数存入B 中(2)若两个数均为奇数,则将两数均加1 后存回原变量。(3)若两个数均为偶数,则两个变量均不改变。答:DAT A S EG M EN TA DB 13HB DB 24HDAT A EN DSCODE S EG M EN TAS S U M E CS:CODE,DS:DAT AS T AR T:M OV AX,DAT AM OV DS,AXM OV AL,AM OV BL,BX OR A

40、L,BLAT ES T AL,01HJ Z S AM ET ES T BL,O1HJ Z DON EX CH G BL,AM OV B,BLJ M P DON ES AN E:T ES T BL,O1HJ Z DON EI N C AI N C BDON E:M OV AH,4CHI N T 2111CODE EN DSEN D S T AR T7.试编制一个程序,求出首地址为DATA的100D字数组中的最小偶数,并把它存入AX中。答:M Y DAT A S EG M EN TDAT A DW 100 DU P(?)N U M DB 100M Y DAT A EN DSCODE S EG M

41、EN TAS S U M E CS:CODE,DS:M Y DAT AS T AR T:M OV AX,DAT AM OV DS,AXM OV CX,N U MM OV S I,0M OV AX,32766AG AI N:T ES T DAT AS I ,1J N Z N EX TCOM P AR E:CM P AX,DAT AS I J L E N EX TM OV AX,DAT A S I N EX T:ADD S I,2L OOP AG AI NEX I T:M OV AH,4CHI N T 21HCODE EN DSEN D S T AR T8.已知从符号地址M开始的内存单元中存放有1

42、5个 16位带符号数,试编制一个程序,将正数依次存放在以符号地址P开始的内存单元中,再将负数依次存放到以符号地址N开始的内存单元中,并将整数和负数的个数显示出来。答:DAT A S EG M EN TM DW 15 DU P(?)AP DW 15 DU P(?)N DW 15 DL P(?)DAT A EN DSCODE S EG M EN TAS S U M E CS:CODE,DS:DAT AS T AR T:M OV AX,DAT AM OV DS,AXM OV CX,15M OV S I,0M OV BX,0M OV DI,0AG AI N:M OV AX,M S I CM P AX,

43、0J L S T EP 1M OV P BX ,AXI N C BXJ M P N EX TS T EP 1:M OV N DI ,AXI N C DIN EX T:I N C S IL OOP AG AI N;输出正负数据个数子程序M OV AH,4CHI N T 21HCODE EN DSEN D S T AR T9.已知数组A l 中包含有15个互不相等的整数,数组A 2 中含有20个互不相等的整数,试编制一个程序,把既在A 1 又 在 A 2 中出现的整数存放在以符号地址为E 开始的内存单元中。答:DAT A S EG M EN TAl DW 15 DU P(?)A2 DW 20 DU

44、 P(?)E DW 15 DU P(?)DAT A EN DSCODE S EG M EN TAS S U M E CS:CODE,DS:DAT AS T AR T:M OV AX,DAT AM OV DS,AXM OV CX,15M OV S I,0M OV DI,0M OV BX,0AG AI N:M OV DX,CXM OV AX,Al S I AM OV DI,0M OV CX,20COM P AR E:CM P AX,A2DI J E M AT CHADD DI,2L OOP COM P AR EJ M P COM M ONM AT CH:M OV EBX ,AXADD BX,2CO

45、M M ON:ADD S I,2M OV CX,DXL OOP AG AI NM OV Al l,4CHI N T 21HCODE EN DSEN D S T AR T10.已知有N个整数a l,a 2,a n已存放在从A开始的内存单元中,试编制一个程序将其中的负数删去,而把留下的正数依次重新存放在从A开始的内存单元中。分析:如果当前位置元素小于0,则将当前位置后面第一个大于0的元素放到当前位置,同时将这一位置值置为T;当该位置后面再没有大于0的元素时,依次将后面各位置元素清。即 可(假设初始时所有元素都不等于0)答:DA T A S EGM EN TA DW a l,a 2,a nN DB

46、($-A)/2DA T A EN DSCO DE S EGM EN TA S S U M E CS:CO DE,DS:DA T AS T A R T:M O V A X,DA T AM O V DS,A XM O V S I,0M O V DI,2M O V CX,NA GA I N:M O V DX,CXM O V A X,A ES I CM P A X,0J L L 00P 1J M P CO M M O NL O O P 1:DEC CXN EX T:M O V A X,A DI CO M A X,0J G N EX T 2A DD DI,2L O O P N EX TJ M P EX

47、I T ;后面已经没有正数,重新排序完毕AN EX T 2:M O V A S I ,A XM O VA DI ,-1CO M M O N:A DD S I,2M O V DI,S IA DD DI,2M O V CX,DXL O O f)A GA I NEX I T:M O V CX,NS H R S IS U B CX,S IS H L S IN EX T 3:M O V A S I ,0A DD S I,2L O O P N EX T 3M O V A l l,4CHI N T 21HCO DE EN DSEN D S T A R T第 5 章子程序及宏指令设计1.调用子程序指令的功能是

48、什么?其操作过程包含哪几个步骤?答:功能:保存返回地址和调用子程序步骤:(1)返回地址入栈(2)用子程序名所代表的子程序入口地址修改I P指令指针寄存器,如果子程序属性是F AR型的,属于跨段调用,还要修改C S寄存器的值(3)根据1P (和C S)值转到子程序执行2.试编制一个多精度数求补的子程序,为提高程序的通用性,要求调用子程序时把多精度数的首地址放在S I中(低字节放低位、高字节放高位),多精度数字节数放在C L中。答:M U L N EG P R O C N EA RM O V DI,S I ;保留首地址M O V CH,O O H ;字节数放C L中,将C H清零P U S H C

49、XL 1:N O T S I ;多精度数各字节取反I N C S IL O O P L IP O P CXM O V S I,DIS T C;将C F置为1,结合A D C语句,实现加1操作L 2:A DC B Y T E P T R S I ,0I N C S IL O O P L 2R ETM U L N EG EN DP3.试编制两个长度不同的多精度整数求和子程序,为提高程序的通用性,要求调用子程序A时把两个多精度数的首地址分别放在SI、D I中(低字节放低位、高字节放高位),多精度数字节数分别放在CL、CH 中。答:求得的和放在较长的多精度整数的存储区A DDI T I O N P R

50、 O C N EA RCL C;Z F清零CM P CL,CHJ GE CA ;第一个多精度数较长CR:M O V A L,S I A DC DI ,A LI N C DII N C S IDEC CLJ N Z CRJ M P EX I TCA:M O V A L,DI A DC S I ,A LI N C DII N C S IDEC CHJ N Z CAEX I T:R ETA DDI T I O N EN DP4.试编写一个子程序用以统计字数组中零元素的个数,参数采用堆栈传递,入口参数为:数组存储区首地址,数组长度N。出口参数为零元素的个数,并写出CALL指令执行前后,以及RET指令执

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

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com