- 242.19 KB
- 2022-04-22 11:43:46 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
'课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!《16/32位微机原理、汇编语言及接口技术》习题解答第2章微处理器指令系统(习题2)2.20按照下列要求,编写相应的程序段:⑴起始地址为string的主存单元中存放有一个字符串(长度大于6),把该字符串中的第1个和第6个字符(字节量)传送给DX寄存器。movdl,string[1]movdh,string[6]⑵有两个32位数值,按“小端方式”存放在两个缓冲区buffer1和buffer2中,编写程序段完成DX.AX←buffer1-buffer2功能。movax,wordptrbuffer1subax,wordptrbuffer2;先减低16位movdx,wordptrbuffer1+2sbbdx,wordptrbuffer2+2;后减高16位,需减低16位的借位⑶编写一个程序段,在DX高4位全为0时,使AX=0;否则使AX=-1。testdx,0f0课后答案网00hjznextmovax,-1www.hackshp.cnjmpdonenext:movax,0done:…⑷把DX.AX中的双字右移4位答:movcx,4again:shrdx,1;右移一位,移出的低位进入CF标志rcrax,1;将CF移进AX高位,同时实现AX右移loopagain;循环4次,实现4位右移⑸有一个100个字节元素的数组,其首地址为array,将每个元素减1(不考虑溢出或借1
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!位)存于原处。movcx,100movbx,0again:subarray[bx],1incbxloopagain2.21AAD指令是用于除法指令之前,进行非压缩BCD码调整的。实际上,处理器的调整过程是:AL←AH×10+AL,AH←0。如果指令系统没有AAD指令,请用一个子程序完成这个调整工作。aadpprocpushbxshlah,1movbl,ahshlah,1shlah,1addbl,ahaddal,blmovah,0popbxretaadpendp课后答案网2.23答:htoascprocwww.hackshp.cnpushdxandal,0fhaadal,90hdaaadcal,40hdaamovdl,almovah,2int21h;显示个位数popdxrethtoascendp2
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!2.24答:dispascprocpushdxxorah,ahaamaddax,3030hpushaxmovdl,ahmovah,2int21h;显示十位数popaxmovdl,almovah,2int21h;显示个位数popdxretdispascendp2.25编写一个程序段:先提示输入数字“InputNumber:0~9”,然后在下一行显示输入的数字,结束;如果不是键入了0~9数字,就提示错误“Error!”,继续等待输入数字。答:;数据段inmsgdb‘InputNumber课后答案网:0~9’,0dh,0ah,’$’ermsgdb‘Error!’,’$’;代码段www.hackshp.cnmovdx,offsetinmsgmovah,9int21h;显示输入数字0~9again:movah,1int21h;接受一个字符cmpal,’0’;判断是否输入的是数字0~9jberdispcmpal,’9’jaerdispmovdl,almovah,2int21h;显示输入的数字jmpdone;结束3
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!erdisp:movdx,offsetermsgmovah,9int21h;显示输入错误jmpagain;继续输入done:…第3章汇编语言程序设计(习题3)3.16解:movah,1;只允许输入小写字母int21hsubal,20h;转换为大写字母movdl,almovah,2int21h;显示3.17解:movbx,offsetLEDtablemoval,lednumxlat3.18解:movax,课后答案网bufXcmpax,bufYwww.hackshp.cnjaedonemovax,bufYdone:movbufZ,ax3.19解:.modelsmall.stack.databufXdw-7signXdb?.code.startupcmpbufX,0;testbufX,80h4
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!jlnext;jnznextmovsignX,0jmpdonenext:movsignX,-1done:.exit0end3.20解:movdl,’2’movax,bufXcmpax,bufYjenext1decdlnext1:cmpax,bufZjenext2decdlnext2:movah,2int21h3.21解:;代码段moval,numbermovbx,0;BX课后答案网←记录为1的位数restart:cmpal,0;AL=0结束jzdonewww.hackshp.cnagain:shral,1;最低位右移进入CFjcnext;为1,转移incbx;不为1,继续jmpagainnext:pushaxpushbxshlbx,1;位数乘以2(偏移地址要用2个字节单元)jmpaddrs[bx];间接转移:IP←[table+BX];以下是各个处理程序段fun0:movdl,"0"jmpdispfun1:movdl,"1"jmpdisp5
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!fun2:movdl,"2"jmpdispfun3:movdl,"3"jmpdispfun4:movdl,"4"jmpdispfun5:movdl,"5"jmpdispfun6:movdl,"6"jmpdispfun7:movdl,"7"jmpdisp;disp:movah,2;显示一个字符int21hpopbxpopaxjmprestartdone:…3.22编制程序完成12H、45H、0F3H、6AH、20H、0FEH、90H、0C8H、57H和34H等10个字节数据之和,并将结果存入字节变量SUM中(不考虑溢出和进位)。;wjxt322.asm课后答案网.modelsmall.stackwww.hackshp.cn.datab_datadb12h,45h,0f3h,6ah,20h,0feh,90h,0c8h,57h,34h;原始数据numequ10;数据个数sumdb?;预留结果单元.code.startupxorsi,si;位移量清零xoral,al;取第一个数movcx,num;累加次数again:addal,b_data[si];累加incsi;指向下一个数loopagain;如未完,继续累加movsum,al;完了,存结果6
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!.exit0end3.23求主存0040h:0开始的一个64KB物理段中共有多少个空格?;wjxt323.asm.modelsmall.codestart:movax,0040h;送段地址movds,axmovsi,0;偏移地址movcx,si;计数(循环次数)xorax,ax;空格计数器清零again:cmpbyteptr[si],20h;与空格的ASCII码比较jnenext;不是空格,转incax;是空格,空格数加1next:incsi;修改地址指针loopagain;cx=cx-1,如cx=0退出循环.exit0endstart3.24编写计算100个16位正整数之和的程序。如果和不超过16位字的范围(65535),则保存其和到wordsum,如超过则显示‘overflow’。答:课后答案网;数据段countequ100www.hackshp.cnparraydwcountdup(?);假设有100个数据wordsumdw0msgdb‘overflow’,’$’;代码段movcx,countmovax,0movbx,offsetparrayagain:addax,[bx]jncnextmovdx,offsetmsgmovah,9int21h;显示溢出信息jmpdone;然后,跳出循环体7
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!next:addbx,2loopagainmovwordsum,axdone:…3.25编程把—个16位无符号二进制数转换成为用8421BCD码表示的5位十进制数。转换算法可以是:用二进制数除以10000,商为“万位”,再用余数除以1000,得到“千位”;依次用余数除以l00、10和l,得到“百位”、“十位”和“个位”。;wjxt325.asm.modelsmall.stack256.dataarraydw?;源字数据dbcddb5dup(?);五位bcd结果,高对高低对低.code.startupmovdx,array;取源数据(余数)movbx,10000;除数movcx,10;除数系数movsi,4;目的数据高位位移量again:movax,dx;dx.ax中存放被除数movdx,0divbx课后答案网;除于bx,商ax,余数dxmovdbcd[si],al;商<10,存结果pushdxwww.hackshp.cn;暂存余数movax,bx;除数除于10movdx,0divcx;dx.ax除于cx,商ax、余数0存在dxmovbx,ax;bx是除数popdxdecsi;目的数据位移量减1jnzagainmovdbcd,dl;存个位数(<10).exit0end3.27解(不需调用HTOASC子程序):again:movah,18
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!int21hcmpal,1bh;ESC的ASCII码是1bhjedonemovdl,almovah,2int21h;是大写字母则转换为小写字母jmpagaindone:…3.28请按如下说明编写子程序:;子程序功能:把用ASCII码表示的两位十进制数转换为对应二进制数;入口参数:DH=十位数的ASCII码,DL=个位数的ASCII码;出口参数:AL=对应的二进制数答:asctobprocpushcxanddh,0fh;先转换十位数shldh,1;十位数乘以10(采用移位指令)movch,dhshldh,1shldh,1adddh,chanddl,0fh课后答案网;转换个位数adddh,dl;十位数加个位数moval,dhwww.hackshp.cn;设置出口参数popcxretasctobendp3.29解:DIPASCproc;入口参数:AL=要显示的一个16进制数pushcxpushdxpushaxmovcl,4;转换高位shral,clcallHTOASCmovdl,al;显示9
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!movah,2int21hpopax;转换低位callHTOASCmovdl,al;显示movah,2int21hmovdl,’H’;显示一个字母“H”movah,2int21hpopdxpopcxretDIPASCendpHTOASCproc;将AL低4位表达的一位16进制数转换为ASCII码andal,0fhcmpal,9jbehtoasc1addal,37h;是0AH~0FH,加37H转换为ASCII码ret;子程序返回htoasc1:addal,30h;是0~9,加30H转换为ASCII码ret;子程序返回HTOASCendp课后答案网3.30解:www.hackshp.cnlucaseprocpushbxmovbx,offsetstringcmpal,0jecase0cmpal,1jzcase1cmpal,2jzcase2jmpdonecase0:cmpbyteptr[bx],0jedonecmpbyteptr[bx],’A’10
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!jbnext0cmpbyteptr[bx],’Z’janext0addbyteptr[bx],20hnext0:incbxjmpcase0case1:cmpbyteptr[bx],0jedonecmpbyteptr[bx],’a’jbnext1cmpbyteptr[bx],’z’janext1subbyteptr[bx],20hnext1:incbxjmpcase1case2:cmpbyteptr[bx],0jedonecmpbyteptr[bx],’A’jbnext2cmpbyteptr[bx],’Z’janext20addbyteptr[bx],20hjmpnext2课后答案网next20:cmpbyteptr[bx],’a’jbnext2www.hackshp.cncmpbyteptr[bx],’z’janext2subbyteptr[bx],20hnext2:incbxjmpcase2done:popbxretlucaseendp3.33解:方法1:neg32proc;入口参数:DX.AX=32位有符号数negax;实现0-DX.AX功能11
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!negdxsbbdx,0;这条指令也可以用decdx代替retneg32endp;出口参数:DX.AX=32位有符号数的补码方法2:neg32proc;入口参数:DX.AX=32位有符号数notax;实现DX.AX求反加1notdxaddax,1adcdx,0retneg32endp;出口参数:DX.AX=32位有符号数的补码3.34解:;数据段arraydb12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90h;数组countequ$-array;数组元素个数resultdb?;校验和;代码段movbx,offsetarray;BX←数组的偏移地址movcx,count;CX←数组的元素个数callchecksum;调用求和过程movresult,al课后答案网;处理出口参数movax,4c00hint21hwww.hackshp.cn;计算字节校验和的通用过程;入口参数:DS:BX=数组的段地址:偏移地址,CX=元素个数;出口参数:AL=校验和;说明:除AX/BX/CX外,不影响其他寄存器checksumprocxoral,al;累加器清0sum:addal,[bx];求和incbx;指向下一个字节loopsumretchecksumendpend12
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!3.35解:⑴.modelsmall.stack.datawdatadw34abh.code.startupmovax,wdatacalldispa.exit0;dispaprocpushcxpushdxmovcl,4movdl,ahshrdl,clcalldldispmovdl,ahanddl,0fhcalldldispmovdl,al课后答案网shrdl,clcalldldispwww.hackshp.cnmovdl,alanddl,0fhcalldldisppopdxpopcxretdispaendp;dldispprocpushaxordl,30hcmpdl,39hjbedldisp113
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!adddl,7dldisp1:movah,2int21hpopaxretdldispendpend⑵.modelsmall.stack.datawdatadw34abhwordtempdw?.code.startupmovax,wdatamovwordtemp,axcalldispa.exit0;dispaprocpushcxpushdx课后答案网movcl,4movdl,byteptrwordtemp+1www.hackshp.cnshrdl,clcalldldispmovdl,byteptrwordtemp+1anddl,0fhcalldldispmovdl,byteptrwordtempshrdl,clcalldldispmovdl,byteptrwordtempanddl,0fhcalldldisppopdxpopcx14
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!retdispaendp;dldispprocpushaxordl,30hcmpdl,39hjbedldisp1adddl,7dldisp1:movah,2int21hpopaxretdldispendpend⑶.modelsmall.stack.datawdatadw34abh.code.startuppushwdata课后答案网calldispapopaxwww.hackshp.cn;addsp,2.exit0;dispaprocpushbpmovbp,sppushaxpushcxpushdxmovax,[bp+4]movcl,4movdl,ahshrdl,clcalldldisp15
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!movdl,ahanddl,0fhcalldldispmovdl,alshrdl,clcalldldispmovdl,alanddl,0fhcalldldisppopdxpopcxpopaxpopbpretdispaendp;dldispprocpushaxordl,30hcmpdl,39hjbedldisp1adddl,7dldisp1:movah,2课后答案网int21hpopaxwww.hackshp.cnretdldispendpend3.40编写一个宏指令movedoprnd,soprnd,它实现任意寻址方式的字量源操作数soprnd送到目的操作数doprnd,包括存储单元到存储单元的传送功能。答:movemacrodoprnd,soprndmovax,soprndmovdoprnd,axendm3.41定义一个宏logical,用它代表4条逻辑运算指令:and/or/xor/test。注意需要利用316
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!个形式参数,并给出一个宏调用以及对应宏展开的例子。答:logicalmacrolcode,dopd,sopdlcodedopd,sopdendm例如,如果使用“andax,[bx]”指令,可以利用该宏定义,写出宏指令如下:logicaland,ax,[bx]3.42解:utolmacrolocalnextcmpal,’A’;小于“A”不转换jbnextcmpal,’Z’;大于“A”不转换janextaddal,20h;是大写字母则转换为小写字母next:endm3.43定义一个宏movestrstrn,dstr,sstr,它将strn个字符从一个字符区sstr传送到另一个字符区dstr解:(假设它们都在数据段)movestrmacro课后答案网strn,dstr,sstrmovcx,dsmoves,cxwww.hackshp.cnmovcx,strnmovdi,offsetdstrmovsi,offsetsstrcldrepmovsb;;重复传送ES:[DI]←DS:[SI]endm第10章微处理器指令系统(习题10)10.16;LED表tabledb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h17
课后答案网:www.hackshp.cn若侵犯了您的版权利益,敬请来信告知!;8255A初始化movdx,0fffbhmoval,10001001b;=89houtdx,al;控制程序again0:movdx,0fffahinal,dx;确定哪个开关闭合movcx,8movah,01h;movah,08hagain1:shral,1;shlal,1jncdisp0incah;decahloopagain1jmpdisp1;显示字段disp0:movbx,offsettablemoval,ahxlatmovdx,0fff8houtdx,aldisp1:movcx,8moval,01h课后答案网movdx,0fff9hdisp2:outdx,alwww.hackshp.cncalldelayshlal,1loopdisp2jmpagain018'
您可能关注的文档
- 成人英语3级考试 听力部分内容 课后答案
- 《中级财务会计学》(第三版)课后答案张维宾主编 立信会计出版社
- 程序设计技术第三版_(熊壮_着)_重庆大学出版社_课后答案
- 护理服务流程(总)
- 《组织行为学》第三版 (张德 著) 课后答案 高等教育出版社
- 护理工作管理流程
- 【电气控制与PLC】课后习题及答案
- 复变函数与积分变换 第二版 (盖云英 著) 科学出版社 课后答案 复变函数与积分变换 第二版 (盖云英 著)
- 无机及分析化学 第四版 (南京大学 无机及分析化学编写组 著) 高等教育出版社 课后答案
- 护理工作流程及处理预案
- 初等数论 第三版 (闵嗣鹤 著) 高等教育出版社 课后答案 初等数论 课后答案
- 吴树青政治经济学参考答案与重点
- 复变函数与积分变换 第二版 (盖云英 著) 科学出版社 课后答案 复变函数与积分变换【傅士变换与拉氏变换】
- 21世纪大学英语 读写教程 修订版 第二册 课后翻译 (潘晓燕 著) 中山大学出版社 课后答案
- 护理紧急风险应急预案及处理流程_(1)
- 21世纪大学英语第一册unit1-2答案
- 初等数论 第三版 (闵嗣鹤 著) 高等教育出版社 课后答案 初等数论原题目
- 护理质量关键流程
相关文档
- 施工规范CECS140-2002给水排水工程埋地管芯缠丝预应力混凝土管和预应力钢筒混凝土管管道结构设计规程
- 施工规范CECS141-2002给水排水工程埋地钢管管道结构设计规程
- 施工规范CECS142-2002给水排水工程埋地铸铁管管道结构设计规程
- 施工规范CECS143-2002给水排水工程埋地预制混凝土圆形管管道结构设计规程
- 施工规范CECS145-2002给水排水工程埋地矩形管管道结构设计规程
- 施工规范CECS190-2005给水排水工程埋地玻璃纤维增强塑料夹砂管管道结构设计规程
- cecs 140:2002 给水排水工程埋地管芯缠丝预应力混凝土管和预应力钢筒混凝土管管道结构设计规程(含条文说明)
- cecs 141:2002 给水排水工程埋地钢管管道结构设计规程 条文说明
- cecs 140:2002 给水排水工程埋地管芯缠丝预应力混凝土管和预应力钢筒混凝土管管道结构设计规程 条文说明
- cecs 142:2002 给水排水工程埋地铸铁管管道结构设计规程 条文说明