




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 习题3.10问题:.画图说明下列语句分配的存储空间及初始化的数据值解答:()ABC1010hE,F,-144441h42h43hOahlOh45h46hffh04h04h04h3个10h0FBhFFh10h56解:1;只允许输入小写字母2转换为大写字母;显示8解:解: 解0:3.2编2制程序完成1等10个字节数据之和,并将结果存入字节变量中(不考虑溢出和进位)。 # #;原始数据;数据个数;预留结果单元;位移量清零;取第一个数;累加次数;累加;指向下一个数a如未完,继续累加,完了,存结果 #解0: 习题3.1解答:参考教材(第60页)习题3.6问题:给出你采用一个源程序格式书写的例题3.1源
2、程序解答:.modelsmall.stack.datastringdbHello,Assembly!,0dh,0ah,$.codestart:movax,datamovds,axmovdx,offsetstringmovah,9int21hmovax,4c00hint21hendstart习题3.12解答:ORG伪指令习题3.13解答:段地址和偏移地址属性,类型属性习题3.26问题:过程定义的一般格式是怎样的?子程序开始为什么常有PUSH指令、返回前为什么常有POP指令?下面完成16位无符号数累加的子程序有什么不妥吗?若有,请改正:解答:crazyPROC;crazyPROCpushax;xo
3、rax,ax;xorax,axxordx,dx;xordx,dxagain:addax,bx;again:addax,bxadcdx,0;adcdx,0incbx;incbxincbx;incbxloopagain;loopagainret;retENDPcrazy;crazyENDP字量求和子程序入口参数:BX=数据首址。乂=数据个数出口参数:人乂=和的低字。乂=和的高字(进位部分)习题3.28问题:请按如下说明编写子程序:;子程序功能:把用ASCII码表示的两位十进制数转换为对应二进制数;入口参数:DH=+位数的ASCII码,DL=(位数的ASCII码;出口参数:人1=对应的二进制数解答:
4、asctobprocpushcx;先转换十位数anddh,0fhshldh,1;乘以10movch,dhshldh,1shldh,1adddh,ch;转换个位数anddl,0fh;十位数加个位数adddh,dl;设置出口参数moval,dhpopcxretasctobendp习题3.341问题:编写一个计算字节校验和的子程序。所谓“校验和”是指不记进位的累加,常用于检查信息的正确性。主程序提供入口参数,有数据个数和数据缓冲区的首地址。子程序回送求和结果这个出口参数。传递参数方法自定。解答:;数据段arraydb12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90hc
5、ountequ$-array;数组元素个数resultdb?;校验和;代码段(主程序)movbx,offsetarray;BX数组的偏移地址movcx,count;CX数组的元素个数callchecksum;调用求和过程movresult,al;处理出口参数习题3.342;代码段(子程序);计算字节校验和的通用过程;入口参数:DS:BX=数组的段地址:偏移地址。乂=元素个数;出口参数:AL=校验和;说明:除AX/BX/CX外,不影响其他寄存器checksumprocxoral,al;累加器清0sum:addal,bx;求和incbx;指向下一个字节loopsumretchecksumendp习
6、题3.17已知用于LED数码管的显示代码表为:LEDtabledb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb80h,90h,88h,83h,0c6h,0c1h,86h,8eh它依次表示09、AF这16个数码的显示代码。现编写一个程序实现将lednum中的一个数字(09、AF)转换成对应的LED显示代码。解答;数据段LEDtabledb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8hdb80h,90h,88h,83h,0c6h,0clh,86h,8ehlednumdb0ah;代码段movbx,offsetLEDtablemoval,led
7、numxlat;al中存有对应的LED显示代码习题3.21例题3.7中,如果要实现所有为1的位都顺序执行相应的处理程序段(而不是例题中仅执行最低为1位的处理程序段),请写出修改后的代码段。解答;代码段moval,numbermovbx,0;BX记录为1的位数restart:cmpal,0;AL=0结束jzdoneagain:shral,1;最低位右移进入CFjcnext;为1,转移incbx;不为1,继续jmpagainnext:pushaxpushbxshlbx,1;位数乘以2(偏移地址要用2个字节单元)jmpaddrsbx;间接转移:IPtabIe+BX;以下是各个处理程序段fun0:mo
8、vdl,0jmpdispfun1:movdl,1jmpdispfun2:movdl,2jmpdispfun3:movdl,3jmpdispfun4:movdl,4jmpdispfun5:movdl,5jmpdispfun6:movdl,6jmpdispfun7:movdl,7jmpdispdisp:movah,2;显示一个字符int21hpopbxpopaxjmprestartdone:习题3.24编写计算100个正整数之和的程序。如果和不超过16位字的范围(65535),则保存其和到wordsum,如超过则显示Overflow!。解答;数据段countequ100parraydwcountd
9、up(?);假设有100个数据wordsumdw0msgdboverflow,$;代码段movcx,countmovax,0movbx,offsetparrayagain:addax,bxjncnextmovdx,offsetmsgmovah,9int21h;显示溢出信息jmpdone;然后,跳出循环体next:addbx,2loopagainmovwordsum,axdone:习题3.25编程把一个16位无符号二进制数转换成为用8421BCD码表示的5位十进制数。转换算法可以是:用二进制数除以10000,商为“万位”,再用余数除以1000,得到“千位”;依次用余数除以100、10和1,得到“
10、百位”、“十位”和“个位”。解答;wjxt325.asm.modelsmall.stack256.dataarraydbcddw?;源字数据db5dup(?);五位bcd结果,高对高低对低.code.startupmovdx,array;取源数据(余数)movbx,10000;除数movcx,10;除数系数movsi,4;目的数据高位位移量again:movax,dx;dx.ax中存放被除数movdx,0divbx;除于bx,商ax,余数dxmovdbcdsi,al;商V10,存结果pushdx;暂存余数movax,bx;除数除于10movdx,0divcx;dx.ax除于ex,商ax、余数0
11、存在dxmovbx,ax;bx是除数popdxdecsi;目的数据位移量减1jnzagainmovdbcd,dl;存个位数(10).exit0end习题3.27编写一个源程序,在键盘上按一个键,将从AL返回的ASCII码值显示出来,如果按下ESC键则程序退出。请调用书中的HTOASC子程序。解答again:movah,1int21hcmpal,1bh;ESC的ASCII码是1bhjedonecallhtoascmovah,2int21hjmpagaindone:习题3.29调用HTOASC子程序,编写显示一个字节的16进制数、后跟“H”的子程序。解答DIPASCproc;入口参数:AL=要显示
12、的一个16进制数pushcxpushdxpushaxmovcl,4;转换高位shral,clcallHTOASCmovdl,al;显示movah,2int21hpopax;转换低位callHTOASCmovdl,al;显示movah,2int21hmovdl,H;显示一个字母“H”movah,2int21hpopdxpopcxretDIPASCendpHTOASCproc;将AL低4位表达的一位16进制数转换为ASCII码andal,0fhcmpal,9jbehtoasc1addal,37h;是0AH0FH,力口37H转换为ASCII码ret;子程序返回htoascl:addal,30h;是0
13、9,加30H转换为ASCII码ret;子程序返回HTOASCendp习题3.35编制3个子程序把一个16位二进制数用4位16进制形式在屏幕上显示出来,分别运用如下3种参数传递方法,并配合3个主程序验证它。采用AX寄存器传递这个16位二进制数采用temp变量传递这个16位二进制数采用堆栈方法传递这个16位二进制数解答.modelsmall.stack.datawdatadw34abh.code.startupmovax,wdatacalldispa.exit0dispaprocpushcxpushdxmovcl,4movdl,ahshrdl,clcalldldispmovdl,ahanddl,0
14、fhcalldldispmovdl,alshrdl,clcalldldispmovdl,alanddl,0fhcalldldisppopdxpopcxretdispaendpdldispprocpushaxordl,30hcmpdl,39hjbedldisp1adddl,7dldisp1:movah,2int21hpopaxretdldispendpend.modelsmall.stack.datawdatadw34abhwordtempdw?.code.startupmovax,wdatamovwordtemp,axcalldispa.exit0dispaprocpushcxpushdxmo
15、vcl,4movdl,byteptrwordtemp+1shrdl,clcalldldispmovdl,byteptrwordtemp+1anddl,0fhcalldldispmovdl,byteptrwordtempshrdl,clcalldldispmovdl,byteptrwordtempanddl,0fhcalldldisppopdxpopcxretdispaendpdldispprocpushaxordl,30hcmpdl,39hjbedldisp1adddl,7dldisp1:movah,2int21hpopaxretdldispendpend.modelsmall.stack.datawdatadw34abh.code.startuppushwdatacalldispapopax;addsp,2.exit0dispaprocpushbpmovbp,sppushaxpushcxpushdxmovax
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省腾冲市第八中学2024-2025学年高三下学期第一次检测试题考试数学试题试卷含解析
- 浙江省金华市婺城区2025年下学期初三英语试题中考仿真考试试卷含答案
- 苏州科技大学天平学院《篮球3》2023-2024学年第一学期期末试卷
- 武汉科技职业学院《学术交流技能》2023-2024学年第二学期期末试卷
- 生物医药行业面试
- 甘肃医学院《国内国际健身市场的发展与定位》2023-2024学年第二学期期末试卷
- 重庆幼儿师范高等专科学校《教学三维动画设计与创作》2023-2024学年第二学期期末试卷
- 福建省泉州市港泉区重点达标名校2025年初三开学摸底考试-英语试题试卷含答案
- 怎样制作课程网络图
- 浙教版2023小学信息技术五年级下册《查表计算》教学设计及反思
- 美妆博主营业方案
- 流体压强与流速的关系市公开课一等奖说课公开课获奖课件百校联赛一等奖课件
- 舞台剧联合投资协议书模板
- 高低压电气及成套设备装配工(技师)技能鉴定理论考试题库及答案
- 亚临界循环流化床锅炉深度调峰运行技术导则
- 术中获得性压力性损伤预防
- 《中国诗词大会》九宫格(原题)
- 2024-2030年中国赛隆行业市场发展趋势与前景展望战略分析报告
- 助理医师结业考试真题与答案
- 2024年山西省历史高考试题及答案解析
- 程啸:法学研究中的文献综述
评论
0/150
提交评论