微机第3章课后习题参考答案.doc_第1页
微机第3章课后习题参考答案.doc_第2页
微机第3章课后习题参考答案.doc_第3页
微机第3章课后习题参考答案.doc_第4页
微机第3章课后习题参考答案.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章课后练习题参考答案3-1创建执行以下过程的中间结果和结果(1) MOV AX,0809HMUL AHAX=AL*AH=48HAAMAX=0702H(2)标题摘要AX=0059H(在分割BCD之前,首先使用AAD将BCD数转换为二进制十六进制数,将未压缩BCD代码0809H表示的数字89转换为十六进制数59H。)DIV DL;Ax=0411h供应商89/5=17=11H储存在AL,剩馀=4储存在AH,因此AX=411HMOV DL、AH;剩馀递送DL,DL=04HAAM;将AL的二进制文件转换为未压缩BCD代码AX,AX=0107H的乘法曹征。最后一个ax=0107和dl=04h(3) A

2、X=0011H,AX=0107H(4)AX=005 AH(MUL AH;AL=09,AH=10=0Ah,9*0AH=5AH),AX=0900H(曹征后的BCD数,5AH=90),AX=0908H(xchg AH,DL用DL交换AH的08H,ADD AL,DL,AL=00 08=08H,AX=0908H)(5) AL=62H(6) AX=0248H(牙齿节目段:AX初始化为0,然后CL的最大位移为舍入位C,使用字节加法将AX*2 C除以两次,并执行压缩BCD加法。分析代码表明,段代码将CL的二进制数转换为BCD代码并将其存储在AX中。节目代码MOV CL,248已编译,CL包含二进制CL=111

3、11000B,相当于十进制数248,因此节目运行完成(AX=0248H)3-2标题1个压缩的BCD数,0-99。转换方法:10位*10位。Stack segment stack stackDw 32 dup(0)Stack endsData segmentBVAR DB 99Hdata endesCode segmentAssume ss : stack,cs :代码,ds :数据BEGIN: MOV AX、DATA将数据段的第一个地址发送到AXMOV DS、AX;将数据段的第一个地址发送到DSMOV AL、BVAR删除要转换的BCD数MOV CL,4SHR AL、CL;向右移动4位,以获得B

4、CD数的10位(向右移动时为4位)Movah,10;MUL AH10位数*10And bvar,0fhBCD的数量是4位数的郑0,得到1位数的数字。ADD BVAR,AL;添加比特数以获得转换结果,并将其直接保存在BVAR存储设备上。MOV AH,4CH返回操作系统的功能编号INT 21H执行操作系统功能调用,如果AH=4cH,则返回操作系统代码恩德斯终端3-3标题Stack segment stack stackDw 32 dup(0)Stack endsData segmentW1 DW 0807HW2 DW 0609HB3 DB 2 DUP(0)data endesCode segmen

5、tAssume ss:stack,cs:代码,ds: dataSTART: MOV AX、DATAMOV DS,AXMovax、w1;AX=0807HSubal,byte ptrw2AL=FEH,CF=1AasAL=08H,AH=07HMOV B3,ALMOV AL,AHSUB AL,W2 1MOV B3 1,ALMOV AH,4CHINT 21H代码恩德斯终端3-4标题使用返回操作系统的另一种方法:装配或链接程序集源程序以运行。生成EXE程序时,操作系统会自动将返回操作系统的命令放在数据段的开头,因此,如果将DS和0000推入堆栈,将程序编写为远程过程(远程调用子节目),然后在节目结尾使用R

6、ET命令,则RET会自动将DS弹出窗口发送到CS,将0000弹出窗口发送到IP,然后将返回数据段的命令发送到操作系统,这样程序就可以返回到操作系统。Stack segment stack stackDw 32 dup(0)Stack endsData segmentD1 DD 06070809HD2 DD 04050607HOBF DB 6 DUP(0)data endesCode segmentBegin proc far远距离进程,返回时从堆栈中弹出4个字节,发送CS:IP。Assume ss:stack,cs:代码,ds: dataPUSH DS堆栈DSSUB AX、AX;Ax=0PUS

7、H AX把0000推入堆栈MOV AX、DATAMOV DS、AX;区段预设位址DSMOV SI,0MOV DI,OFFSET OBF 5MOV BYTE PTRDI,$MOV CX,4XOR AH,AHAGAIN: MOV AL,BYTE PTR D1SIADD AL,BYTE PTR D2SIADD AL,AHMOV AH,0AAAADD AL,30HDEC DIMOV DI,ALINC SILOOP AGAINAND AH,AHJZ N5DEC DIMOV BYTE PTRDI,1N5: MOV DX,DIMOV AH,9INT 21HRetBegin endp代码恩德斯结束begin3

8、-5标题Stack segment stack stackDw 32 dup(0)Stack endsData segmentW1 DW 8931HW2 DW 5678HOBF DB 6 DUP(0)data endesCode segmentBegin proc farAssume ss:stack,cs:代码,ds: data推送dsSub ax,axPush axMov ax、dataMov ds,axMOV DI,0Moval,byte ptr w1AL=31HAdd al,byte ptr w2AL=A9H,CF=0,AF=0DaaAL=09H,CF=1MOV AH,ALMoval,

9、byte ptr w1AL=89HAdc al,byte ptr w2 1;AL=E0H,CF=0,AF=1DaaAL=46H,CF=1普希夫MOV DI OFFSET OBF 5MOV BYTE PTRDI,$MOV CL,4XCHG AH,ALAGAIN: MOV DL,0FHAND DL,ALADD DL,30HDEC DIMOV DI,DLSHR AX,CLAND AX,AXJNZ AGAIN波普Jnc输出DEC DIMOV BYTE PTRDI,1OUTPUT: MOV DX,DIMOV AH,9INT 21HBegin endp代码恩德斯结束begin3-6标题Stack segm

10、ent stack stackDw 32 dup(0)Stack endsData segmentBVAR DB 99HOBUF DB 4 DUP(0)data endesCode segmentBegin proc farAssume ss : stack,cs :代码,ds :数据推送dsSub ax,axPush axMov ax、dataMov ds,axMoval、bvar发送二进制ALMovah,0;二进制数扩展到16位(无符号扩展)MOV DL,100DIV DLAdd al,30h将100位更改为ASCII代码Movobuf,al;存一百人MOV AL、ah;发送10位和个二进

11、制数,即剩下的ALAam将AL的二进制数转换为ASCII BCD数将ADD AX,3030h : AX中的ASCII BCD数更改为ASCII代码MOV OBUF 1,AHMOV OBUF 2,ALMOV OBUF 3,$MOV DX,OFFSET OBUFMOV AH,9INT 21HRetBegin endp代码恩德斯结束begin* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *将8位二进制数转换为十进制数也可以用十除法实现。转换过程段包括:MOV AL、B

12、VARXOR AH,AH;将8位二进制数扩展到16位(无符号扩展)MOV DL,10DIV DLADD AH,30h将第一个剩馀位元(位元)变更为ASCII程式码MOV OBUF 2,AHXOR AH,AH;将AL的二进制数扩展到16位DIV DLADD AX,3030h : AH排在第10位,AL排在第100位MOV WORD PTR OBUF,AXMOV OBUF 3,$也可以向左移动二进制数,将二进制数转换为十进制数。XOR AX、AX;郑0AXMOV CX,8;向左移动8次二进制数AGAIN: SHL BVAR,1ADC AL,ALDAAAdcah,0;如果AH值小于或等于2,则无需校

13、准LOOP AGAINAdd ah,30h从100位转换为ASCII代码MOV OBUF,AHMovah、al;储存10位数和狗MOV CL,4Shr al、cl;BCD从数十位移动到AL low 4位And ah,ofh几个BCD AH低4位Add ax,3030h:将位元和10位元转换为ASCII程式码MOV WORD PTR OBUF 1,AXMOV OBUF 3,$以将二进制1111101B转换为BCD数量0253H为例,说明了转换过程,如下图所示。3-7标题Stack segment stack stackDw 32 dup(0)Stack endsData segmentTAB DW 0DB 0 $DW 1DB 1 $DW 8数据库8 $DW 64000Db64000美元LFZ DW 0IBUF DB 3,0,3 DUBP(0)data endesCode segmentBegin proc farAssume ss : stack,cs :代码,ds :数据推送dsSub ax,axPush axMov ax、d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论