汇编课后习题答案-第五章.pdf
《汇编课后习题答案-第五章.pdf》由会员分享,可在线阅读,更多相关《汇编课后习题答案-第五章.pdf(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、首页入门学习 程序员 计算机考研 计算机)了出下载 硬件知识 网络知识 专业课程答粢下载 视频教程下载第 五 章作者:佚 名 来 源:网络5.1 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。答:程序段如下:B E G I N:MOV A H,1 ;从键盘输入一个字符的D OS调用I NT 2 1 HC MP A L,a;输入字符 a吗?JB STOPC MP A L,z,;输入字符,z 吗?JA STOPSUB A L,2 0 H ;转换为大写字母,用A ND A L,1 1 0 1 1 1 1 1 B也可MOV D L,A L;显示一个字符的D OS调用MOV A H
2、,2I NT 2 1 HJMP B E G I NSTOP:RE T5.2 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。答:程序段如下:B E G I N:MOV A H,1 ;从键盘输入一个字符的D OS调用I NT 2 1 HC MP A L,匕;输入字符 吗?JB STOPC MP A L,z;输入字符 z 吗?JA STOPD E C A L;得到前导字符MOV D L,A L;准备显示三个字符MOV C X,3D I SPLA Y:MOV A H,2 ;显示一个字符的D OS调用I NT 2 1 HI NC D LLOOP D I SPL
3、A YSTOP:RE T5.3 将 A X 寄存器中的1 6 位数分成4 组,每组4 位,然后把这四组数分别放在A L、B L、C L 和 D L 中。答:程序段如下:D SE G SE G ME NTSTORE D B 4 D UP(?)D SE G E ND SIIIB E G I N:MOV C L,4 ;右移四次MOV C H,4 ;循环四次LE A B X,STOREA 1 O:MOV D X,A XA ND D X,OF H ;取 A X 的低四位MOV B X,D L;低四位存入STORE 中I NC B XSH R A X,C L;右移四次D E C C HJNZ A 1 0
4、;循环四次完了码?B I O:MOV D L,STORE ;四组数分别放在A L、B L、C L和 D L中MOV C L,STORE+1MOV B L,STORE+2MOV A L,STORE+3STOP:RE T5.4试编写一程序,要求比较两个字符串STRI NG 1 和 STRI NG 2 所含字符是否完全相同,若相同则显示 MA TC H ,若不相同则显示 NO MA TC H 0答:程序如下:D SE G SE G ME NTSTRI NG 1 D B I am a s t u d e n t.*STRI NG 2 D B I am a s t u d e n t!)YE S D B
5、 MA TC H ,OD H,OA H,$NO D B NO MA TC H ,OD H,OA H,$D SE G E ND SC SE G SE G ME NTMA I N PROC F A RA SSUME C S:C SE G,D S:D SE G,E S:D SE GSTA RT:PUSH D S;设置返回 D OSSUB A X,A XPUSH A XMOV A X,D SE GMOV D S,A X ;给 D S 赋值MOV E S,A X ;给 E S 赋值B E G I N:LE A SI,STRI NG 1 ;设置串比较指令的初值LE A D I,STRI NG 2C LDM
6、OV C X,STRI NG 2 -STRI NG 1RE PE C MPSB ;串比较JNE D I SPNOLE A D X,YE S;显示 MA TC HJMP D I SPLA YD I SPNO:LE A D X,NO;显示 NO MA TC HD I SPLA Y:MOV A H,9 ;显示一个字符串的D OS调用I NT 2 1 HRE TMA I N E ND PC SE G E ND S;以上定义代码段E ND STA RT5.5试编写一程序,要求能从键盘接收一个个位数N,然后响铃1 1 次(响铃的A SC H码为0 7)。答:程序段如下:B E G I N:MOV A H,
7、1 ;从键盘输入一个字符的D OS调用I NT 2 1 HSUB A L,OJB STOP;输入字符,0 吗?C MP A L,9 ;输入字符 9 吗?JA STOPC B WMOV C X,A X ;响铃次数NJC X Z STOPB E LL:MOV D L,0 7 H ;准备响铃MOV A H,2 ;显示个字符的D OS调用,实际为响铃I NT 2 1 HC A LL D E LA Y 1 0 0 m s ;延时.1 0 0 m sLOOP B E LLSTOP:RE T5.6 编写程序,将一个包含有2 0 个数据的数组M 分成两个数组:正数数组P 和负数数组N,并分别把这两个数组中数据
8、的个数显示出来。答:程序如下:D SE G SE G ME NTC OUNT E QU 2 0A RRA Y D W 2 0 D UP(?);存放数组C OUNT 1 D B 0 ;存放正数的个数A RRA Y 1 D W 2 0 D UP(?);存放正数C 0 UNT2 D B 0 ;存放负数的个数A RRA Y2 D W 2 0 D UP(?);存放负数ZH E N D B OD H,OA H,Th e po s it iv e n u m be r is:,$;正数的个数是:F U D B OD H,OA H,Th e n e gat iv e n u m be r is:,*$;负数的
9、个数是:C RLF D B OD H,OA H,$D SE G E ND SC SE G SE G ME NTMA I N PROC F A RA SSUME C S:C SE G,D S:D SE GSTA RT:PUSH D S;设置返回 D OSSUB A X,A XPUSH A XMOV A X,D SE GMOV D S,A X ;给 D S 赋值B E G I N:MOV C X,C OUNTLE A B X,A RRA YLE A SI,A RRA Y1LE A D I,A RRA Y2B E G I N1:MOV A X,B X C MP A X,0 ;是负数码?JS F US
10、H UMOV SI,A X ;是正数,存入正数数组I NC C OUNT 1 ;正数个数+1A D D SI,2JMP SH ORT NE X TF USH U:MOV D I,A X ;是负数,存入负数数组I NC C 0 UNT2 ;负数个数+1A D D D I,2NE X T:A D D B X,2LOOP B E G I NILE A D X,ZH E N;显示正数个数MOV A L,C OUNT1C A LL D I SPLA Y;调显示子程序LE A D X,F U;显示负数个数MOV A L,C 0 UNT2C A LL D I SPLA Y;调显示子程序RE TMA I N
11、E ND PD I SPLA Y PROC NE A R;显示子程序MOV A H,9 ;显示一个字符串的D OS调用I NT 2 1 HA A M;将(A L)中的二进制数转换为二个非压缩B C D 码A D D A H,O;变为 0 9 的 A SC H 码MOV D L,A HMOV A H,2 ;显示个字符的D OS调用I NT 2 1 HA D D A L,;变为 0-9 的 A SC I I 码MOV D L,A LMOV A H,2 ;显示一个字符的D OS调用I NT 2 1 HLE A D X,C RLF ;显示回车换行MOV A H,9 ;显示一个字符串的D OS调用I N
12、T 2 1 HRE TD I SPLA Y E ND P;显示子程序结束C SE G E ND S;以上定义代码段E ND STA RT5.7 试编写一个汇编语言程序,求出首地址为D A TA 的1 0 0 D 字数组中的最小偶数,并把它存放在A X 中。答:程序段如下:BEGI N:MOV BX,0MOV C X,100C OMP A R E:MOV A X,D A TA BX;取数组的第一个偶数A D D BX,2TES T A X,01H;是偶数吗?LOOP NZ C OMP A R E;不是,比较下一个数J NZ S TOP ;没有偶数,退出J C X Z S TOP ;最后个数是偶数
13、,即为最小偶数,退出C OMP A R E 1:MOV D X,D A TA BX;取数组的下一个偶数A D D BX,2TES T D X,01H;是偶数吗?J NZ NEX T;不是,比较下一个数C MP A X,D X ;(A X)(D X)吗?J LE NEX TMOV A X,D X ;(A X)(D X),则置换(A X)为最小偶数NEX T:LOOP C OMP A R E1S TOP:R ET5.8 把A X 中存放的16位二进制数K 看作是8 个二进制的“四分之一字节”。试编写程序要求数一下值为3 (即11B)的四分之一字节数,并将该数(即11B的个数)在终端上显示出来。答:
14、程序段如下:BEGI N:MOV D L,0;计数初始值MOV C X,8C OMP A R E:TES T A X,03 H;是数 03 吗?J NZ NOEQ U A L;不是,转走I NC D L;是,计数NOEQ U A L:R OR A X,1 ;准备判断下一个数R OR A X,1LOOP C OMP A R EA D D D L,O ;将计数值转换为A S C H码MOV A H,2 ;进行显示I NT 2 1HS TOP:R ET5.9 试编写一个汇编语言程序,要求从键盘接收一个四位的16进制数,并在终端上显示与它等值的二进制数。答:程序段如下:BEGI N:MOV BX,0;
15、用于存放四位的16进制数MOV C H,4MOV C L,4I NP U T:S HL BX,C L;将前面输入的数左移4 位MOV A H,1 ;从键盘取数I NT 2 1HC MP A L,3 0H;0 吗?J B I NP U T;不 是 0F的数重新输入C MP A L,3 9 H;是 09 吗?J A A F;不是,转A-F的处理A ND A L,OFH;转换为:0000B1001BJ MP BI NA R YA F:A ND A L,1101 H U B ;转换为大写字母C MP A L,4 1H;又 F 吗?J A I NP U T;不 是 A F的数重新输入A ND A L,O
16、FH;转换为:1010B-1111BA D D A L,9BI NA R Y:OR BL,A L;将键盘输入的数进行组合D EL C HJ NZ I NP U TD I S P N:MOV C X,16;将 16位二进制数一位位地转换成A S C H码显示D I S P:MOV D L,0R OL BX,1R C L D L,1OR D L,3 0HMOV A H,2 ;进行显示I NT 2 1HLOOP D I S PS TOP:R ET5.1 0 设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,查对单词S U N在该文中的出现次数,并以格式“S U N:xxxx”显示出次
17、数。答:程序如下:D S EG S EGMENTENG D B He r e i s s u n,s u n ,$D I S P D B S U N:D A T D B 0000,OD H,OA H,$K EY WOR D D B s u n D S EG END SC S EG S EGMENTMA I N P R OC FA RA S S U ME C S:C S EG,D S:D S EG,ES:D S EGS TA R T:P U S H D S ;设置返回 D OSS U B A X,A XP U S H A XMOV A X,D S EGMOV D S,A X ;给 D S 赋值M
18、OV ES,A X ;给 ES 赋值BEGI N:MOV A X,0MOV D X,D I S P-ENG-2 ;计算ENG的长度(每次比较s u n,因此比较次数-2)LEA BX,ENGC OMP:MOV D I,BXLEA S I,K EY WOR DMOV C X,3R EP E C MP S B;串比较J NZ NOMA TC HI NC A X ;是,S U N的个数加1A D D BX,2NOMA TC H:I NC BX ;指向ENG的下一个字母D EC D XJ NZ C OMPD ONE:MOV C H,4 ;将次数转换为16进制数的A S C H码MOV C L,4LEA
19、 BX,D A T;转换结果存入D A T单元中D ONE1:R OL A X,C LMOV D X,A XA ND D L,OFH;取一位16进制数A D D D L,3 0HC MP D L,3 9 HJ LE S TOR EA D D D L,07 H;是“A F”所以要加7S TOR E:MOV BX,D L;转换结果存入D A T单元中I NC BXD EC C HJ NZ D 0NE1D I S P LA Y:LEA D X,D I S P ;显示字符串程序(将 D I S P 和 D A T一起显示)MOV A H,09 HI NT 2 1HR ETMA I N END PC S
20、 EG END S ;以上定义代码段END S TA R T5.1 1 从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果。答:程序段如下:D S EG S EGMENTBU FF D B 50 D U P ()C OU NT D W 0D S EG END SIIIBEGI N:LEA BX,BU FFMOV C OU NT,0I NP U T:MOV A H,01;从键盘输入个字符的功能调用I NT 2 1HMOV BX,A LI NC BXC MP A L,$,;是$结束符吗?J NZ I NP U T;不是,继续输入LEA BX,BU FF;对非数字字符
21、进行计数NEX T:MOV C L,BX I NC BXC MP C L,$,;是$结束符,则转去显示J Z D I S PC MP C L,3 0H;小于0 是非数字字符J B NEX TC MP C L,3 9 H;大于9是非数字字符J A NEX TI NC C OU NT;个数+1J MP NEX TD I S P::;16进制数显示程序段(省略)5.1 2 有一个首地址为MEM的100D 字数组,试编制程序删除数组中所有为0 的项,并将后续项向前压缩,最后将数组的剩余部分补上0。答:程序如下:D S EG S EGMENTMEM D W 100 D U P (?)D S EG END
22、 SC S EG S EGMENTMA I N P R OC FA RA S S U ME C S:C S EG,D S:D S EGS TA R T:P U S H D S ;设置返回 D OSS U B A X,A XP U S H A XMOV A X,D S EGMOV D S,A X ;给 D S 赋值BEGI N:MOV S I,(100-1)*2 ;(S I)指向MEM的末元素的首地址MOV BX,-2 ;地址指针的初值MOV C X,100C OMP:A D D BX,2C MP MEM BX,0J Z C ONSLOOP C OMPJ MP FI NI S H;比较完了,已无
23、0 则结束C ONS:MOV D I,BXC 0NS 1:C MP D I,S I ;到了最后单元码?J A E NOMOVMOV A X,MEM D I+2;后面的元素向前移位MOV MEM D I,A XA D D D I,2J MP C 0NS 1NOMOV:MOV WOR D P TR S I,0;最后单元补 0LOOP C OMPFI NI S H:R ETMA I N END PC S EG END S ;以上定义代码段END S TA R T5.1 3 在 S TR I NG到 S TR I NG+9 9 单元中存放着一个字符串,试编制一个程序测试该字符串中是否存在数字,如有则把
24、C L的第5 位置1,否则将该位置0。答:程序如下:D S EG S EGMENTS TR I NG D B 100 D U P (?)D S EG END SC S EG S EGMENTMA I N P R OC FA RA S S U ME C S:C S EG,D S:D S EGS TA R T:P U S H D S ;设置返回 D OSS U B A X,A XP U S H A XMOV A X,D S EGMOV D S,A X ;给 D S 赋值BEGI N:MOV S I,0;(S I)作为地址指针的变化值MOV C X,100R EP EA T:MOV A L,S TR
25、 I NG S I C MP A L,3 0HJ B GO_ ONC MP A L,3 9 HJ A GO_ ONOR C L,2 0H;存在数字把C L的第5 位置1J MP EX I TGO_ ON:I NC S ILOOP R EP EA TA ND C L,OD FH;不存在数字把C L的第5 位置0EX I T:R ETMA I N END PC S EG END S ;以上定义代码段END S TA R T5.1 4 在首地址为TA BLE的数组中按递增次序存放着100H个 16位补码数,试编写一个程序把出现次数最多的数及其出现次数分别存放于A X 和 C X 中。答:程序如下:D
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 课后 习题 答案 第五
限制150内