微机实验九数码转换_第1页
微机实验九数码转换_第2页
微机实验九数码转换_第3页
微机实验九数码转换_第4页
微机实验九数码转换_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

微机实验九数码转换实验目的1.掌握计算机常用数据编码之间的相互转换方法。2.进一步熟悉DEBUG软件的使用方法一、实验内容1.ACSII码转换为非压缩型BCD码编写并调试正确的汇编语言源程序,使之实现:设从键盘输入一串十进制数,存入DATA1单元中,按回车停止键盘输入。将其转换成非压缩性(非组合型)BCD码后,再存入DATA2开始的单元中。若输入的不是十进制数,则相应单元中存放FFH。调试程序,用实验代码:DATASEGMENT;定义数据段DATA1DB21,?,21DUP(?);建立一个内存区,第二个数存放最大字符数STACKSEGMENTSTACK;定义堆栈段DB100DUP(?)CODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATA;程序初始化MOVDS,AX;程序初始化MOVAH,0AH;从键盘中输入字符串INT21H;调用INT21功能INCSI;指向LP1循环次数MOVCL,[SI];存放LP1的循环次数HINCSI;指向所输入的数ALP1:MOVAL,[SI];将输入的数存放到AL中CMPAL,30H;AL与30H比较JCLP2;AL<30H,则跳LP2CMPAL,39H;AL与39H比较JALP2;AL>39H,则跳LP2(JG与JA比较)SUBAL,30H;将输入的字符转换成ASCII码MOVBL,AL;AL→BLVDIBLBLDSDIINCSI;SI=SI+1INCDI;DI=DI+1.JMPEXIT;循环LP1;跳转到EXITLP2:MOVBL,0FFH;如果输入的不是十进制数,则在相应的单元中存放FFHJMPSAVE;跳转到SAVEEXIT:MOVAH,4CHINT21HCODEENDS.2.BCD码转换为二进制码编写并调试正确的汇编语言源程序,使之将一个16位存储单元中存放的4位BCD码D代码:MENTDB256DUP(?)CODESEGMENTASSUMESS:STACK,CS:CODE,DS:DATASTARTMOVAX,DATAMOVDS,AXXORBX,BX;累加单元清0(BX=0)MOVSI,0AH;设置乘数10MOVCL,4MOVCH,3;设置循环次数3MOVAX,DATA1;取十进制数LP:ROLAX,CL;取数字MOVDI,AX;保存当前AX值ANDAX,0FH;屏蔽高位ADDAX,BX;累加MULSIMOVBX,AX.MOVAX,DIDECCH;循环次数减1JNZLPROLAX,CL;取个位数字ANDAX,0FH;屏蔽高位ADDAX,BX;累加MOVDATA2,AXMOVAH,4CHINT21HCODEENDS.3.十六进制数转换为ACSII码编写并调试正确的汇编语言源程序,使之将内存DATA1字单元中存放的4位十六进制ASCII分别存入DATA2为起始地址的4个单元中,低位数存在低地址的字幕上显示出。代码:MENTDB256DUP(?)DATADBH2CH;4位十六进制数LFCRDB0DH,0AH,'$'CODESEGMENTASSUMESS:STACK,DS:DATA,CS:CODEMOVDS,AXMOVCL次LP1:MOVAL,[SI];取2位十六进制数ANDAL,0F0H;屏蔽低四位ALMOV[DI],AL;高位数存放在高地址字节中INCDIMOVAL,[SI];取2位十六进制数ANDAL,0FH;屏蔽高四位MOV[DI],AL;低位数存放在低地址字节中INCSIINCDIJNZLP1IADIMOVCL次LPMOVALSIDATA3中的十六进制数CMPAL,9ADDALH>ASC码,要加30HJMPLP4ALHAFASCHLPMOVDIALASC码依次存入DATA2中INCDIINCSI.JNZLP2MOVAL,'$';设置显示结束标志LDATALEADX,LFCRMOVAH,09HINT21H;回车换行MOVAH,09HINT21H;显示ASC码MOVAH,4CHINT21HCODEENDS.二、实验步骤1.编辑源文件,经汇编连接产生EXE文件。DEBUG试、检查、修改程序。三、实验习题与思考1.编程实现:从键盘上输入两位十六进制数,转换成十进制数后显示在屏幕上。源代码:SEGMENTDBDUP)GMENTDATA2DB2DUP(?)DATA3DB2DUP(?)CODESEGMENTASSUMESS:STACK,DS:DATA,CS:CODEMOVDS,AXMOVAH,0AHINT21H;输入字符串MOVCL,2;将ASC码转换为十六进制数LP1:MOVAL,[SI]SUBAL,30HCMPAL,9JALP2MOV[DI],ALINCDIINCSIDECCLJZLP3JNZLP1INCINCJNZADDXORXORAL,7AL,[DI]AL,CLAL,BLAH,AHCL,100AL,AHAH,AHCL,10;将十六进制数转换成十进制数,并保存;保存百位数DIVCLMOV[SI+1],ALMOV[SI+2],AH;屏幕显示十进制数LP4:MOVINTINTINTINTAH,02HAH,02HAH,02HAH,4CHCODEENDS运行图:.;保存十位数;保存个位数;取百位数送显;取十位数送显;取个位数送显输入:输出:输入:.十进制数转换为七段码。为了在七段显示器上显示十进制数,需要把十进制数转换为七段代码。转换可采用查表法。设需要转换的十进制数已存放在起始地址为DATA1区域中,七段代码转换表存放在起始地址为TABLE表中,转换结果存放到起始地址为DATA2区域。若待转换的数不是十进制数,则相应结果单元内容为00H。源代码:SEGMENTDBDUP)GMENTDATA1DB0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,'A','B','C','$'TABLEDB00H,40H,01H,79H,02H,24H,03H,30H,04H,19H,05H,12H,06H,02H,07H,78H,08H,00H,09H,18H,0AH,08H,0BH,03H,0CH,46H,0DH,21H,0EH,06H,0FH,0EH;实际数据定义必须在同一行COUNTEQU2CODESEGMENTASSUMESS:STACK,DS:DATA,CS:CODEMOVDS,AXX

温馨提示

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

评论

0/150

提交评论