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

下载本文档

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

文档简介

1、微机实验九数码转换实验目的1 . 掌握计算机常用数据编码之间的相互转换方法。2 .进一步熟悉DEBUG软件的使用方法一、实验内容1. ACSII码转换为非压缩型 BCD码编写并调试正确的汇编语言源程序,使之实现:设从键盘输入一串十进制数,存入 DATA1单元中,按回车停止键盘输入。将其转换成非压缩性(非组合型)BCD码后,再存入DATA2开始的单元中。若输入的不是十进制数,则相应单元中存放FFHt调试程序,用D命令检查执行结果。实验代码: 1.DATA SEGMENT;定义数据段DATA1 DB 21,21 DUP()建立一个内存区,第二个数存放最大字符数DATA2 DB 21 DUP();D

2、ATA2 区定义DATA ENDSSTACK SEGMENT STACK;定义堆栈段DB 100 DUP()STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA ;程序初始化MOV DS,AX;程序初始化LEA DX,DATA1 ;D存放 DATA1 的首地址MOV AH,0AH ;从键盘中输入字符串INT 21H;调用INT21 功能LEA SI,DATA1 ;除放 DATA1 的首地址INC SI;指向LP1 循环次数MOV CL,SI ;存放 LP1 的循环次数MOV CH,0INC SI;指向所输入

3、的数LEA DI,DATA2 ;D存放DATA2的首地址LP1: MOV AL,SI;将输入的数存放到 AL中CMP AL,30H;AL与30H比较JC LP2 ;AL39H,则跳 LP2(JG与 JA比较)SUB AL,30H ;将输入的字符转换成 ASCII码MOV BL,AL;ALfBLSAVE: MOV DI,BL ;BLf DS:DIINC SI;SI=SI+1INC DI;DI=DI+1LOOP LP1;循环 LP1JMP EXIT;跳转到 EXITLP2: MOV BL,0FFH ;如果输入的不是十进制数,则在相应的单元中存放FFHJMP SAVE;跳转至U SAVEEXIT:M

4、OV AH,4CHINT 21HCODE ENDSEND START回回c Couand Prompt - DEBUG EVE (C)Copyight Microsoft Corp 19?0-2001.|c :XFUTU BE1 XFftSrfOUT DEBUG A. EXEB8D916HOUAK,16D216DC;0O&3BEDSNOUDSJX16DC:0QO5BA08H0HOUDKN0 g目B40AHOUAH ,目由I6DC:频期CD21I NIT2116DC.000CBE0O00HOUsi,eodo16DC:00BF46INGsrI6DC;0g1日HOUCL,ESI16DC:0012B5

5、08HOUCH,加16DC:Wyi44GINCSI1&DC:0BJ5BF1700HOUDI,601?SAR4nowhl,rsi3C30CMP16DG:H01G7E10JD002116DC;001E3C39CMPAL, 391 G-1GDC:00OR 001rtl23AK-0A31 DX-09B0CH-6803 DK-30BB SPH00t4BP-0600 !3I-0B82 DI-0017|1)S=16D2 E16C2SS-16D5 CG-16DC IP=0O1ENU UP IIPL HZ NA PO NC1GDC:00JE3C39cnrAL, 39tl6DC:0S30 EBF4 gDC=OO3

6、2 E44c 16DC:UU34 CD21 hDC:0O36 前函 lDC:Q03e BQ6Q lDC:S03A SG0B16DC:O03C SO0QG=16DC:001E 083AJMInQ =ntdddd ndlddM02AH,4C21 SX+STKftL 卫X +SI J,ftL NX +SIJ, AL BX+SIKftLc Couand Troipt - DEBUG A. EXErofjpan teymindted normallyPC=16IX; = 001E 0034ftXC03 J)S=lfcD2 16DC:B834 pD6Q0Q“D2砌901D2:G02G H6D2;6030

7、16D2:0818 16D2;0858 h6D2:O06O 16D2 :RR7f)BX =B6B3E=1CC2CD21CM=6800=S00R SF=fi064S=lfcD5 CS=16BC 1P=0034 I NT 21BP=H目 SI=8005 DI=001fiNU UP EI PL MZ MR PO NC8 -u 0 0 0 0 00 -M 0 fl- 0 0 -M 030000000S00000002000000030000000 1S-H06 60 阴30000000 30000。0e00000005000000010000000M0-0U ei-02 00-00 00-00 00-

8、00 0000fl A-flfl0000080-3 _u 0 -0 0- jXt00000 00- 400MM000E00000目同3 00000001 HPSi w- -u- S* 0 0_u u- u_3U309 5nnRc: Couand Prompt - DEBUG 1Z3.EHEL6D1i002C L6D1:S02E L6D1:8039 L6D1:0Q32 L6D1:0034IGD1:0036 L6D1:BQ38 L&D1:003A L6D1;003CEB04 B3FF EBF4 B44C CD21 0008 O0B9 萌萌 O00dFUPUTDDDD0032BL/F 0SZ6 fi

9、H,4C 21FBX*SI】,M :BX-SI J,flL BX4SI1,AL BXtSl J,AL:O01E 0934X=4C45 BX =00FFS-16C7 E&-16B7 6D1:0934 CDZ1CX =6900 DX=k)060 SP=B064GS-1CCA CS-16DIP-00341NT 21HP=HUH0 SI=0006 DI=001BNU UF EI PL HZ MA PE NCDBfiflA 6C7:0000 6C7:0010 6C7:0Q20L6C7;0030 6C7:0040 GC7:6QLO 6C?:00C0L6C?:0B?015 60 00 Q0 B0 80 00

10、 0004 0000000060000031 日D 0g Rg 00 US 的 0e3286 060606 SB060645 B8 00 的 08 B8 00 00SD 03幽 0303S3 03 eaM0-00 01-82 G0-ee 60 6000-R0 0S-Q0 00-ee Ge ee00 00日目30 08 00日回00 00修。00 0030 00 0000 00 0030 M0 UU90 0D 00_w 0 0 _w一808fi_M- w -M-n0 M- _M_2. BCD码转换为二进制码编写并调试正确的汇编语言源程序,使之将一个16位存储单元中存放的 4位BCD码DATA1,

11、转换成2进制后存入DATA2字单元中。调试程序,用 D命令检查执行结果。代码:STACK SEGMENTDB 256 DUP()STACK ENDSDATA SEGMENTDATA1 DW 1234HDATA2 DWDATA ENDSCODE SEGMENTASSUME SS:STACK,CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AX;累加单元清0(BX=0); 设置乘数10;设置循环次数3; 取十进制数;取数字保存当前AX值;屏蔽高位; 累加XOR BX,BXMOV SI,0AHMOV CL,4MOV CH,3MOV AX,DATA1LP: ROL AX,

12、CLMOV DI,AXAND AX,0FHADD AX,BXMUL SIMOV BX,AXMOV AX,DI; 循环次数减1;取个位数字; 屏蔽高位; 累加DEC CHJNZ LPROL AX,CLAND AX,0FHADD AX,BXMOV DATA2,AXMOV AH,4CHINT 21HCODE ENDSEND START1 c Couand Prompt -DEBUG D. EffEEx1icrosoft WinAousEOS|up5rrlya MluruufI Curp1?70-2001.Ic = xFUTU RE1FftSrtOUT EBUG D.EKE-u16D:000E) BB

13、D716HOUAX,16D716D8:0RR3 8ED8HOU16D8:0OB5 33DBKOR晒JK16D8:00U7 BE0A00HOUSI,000A16D8;003A B104HOUCL, 416D8 eBMG B503HOUCH,6316D8:0O8ENOUAX,088011&D8:B011 D3C9BOLHX.CL16D8:0013 ODPOHOUDI .科X16D:0Q15 250F00AHDAX,600FlGDB:AgjQ 03CJADDAK,VK16De:091A F7E6HULSIl&DS:301G 0DDOHOU1GD:001E 8BC7HOUAX, DIc9,跳转到 LP

14、3ADD AL,30H十六进制数0-9-ASC码,要加30HJMP LP4LP3: ADD AL,37H 十六进制数 A-F-ASM,要加 37HLP4: MOV DI,AL ;将 ASC码依次存入 DATA2 中INC DIINC SIDEC CLJNZ LP2MOV AL,$;设置显示结束标志MOV DI+1,AL ;存入 DATA2 中LEA DX,LFCRMOV AH,09HINT 21H ;回车换行MOV DX,OFFSET DATA2MOV AH,09HINT 21H ;显示 ASC码MOV AH,4CHINT 21HCODE ENDSEND START妙 Couand Propt

15、6 DS :M6B De=OOOB 6D8二0岫D:S013 :G015 :001?:0019:601C :QB1EBFevse E1V2 8A64 24F0 DOCS DOCS DOCS D8C6 8S05 47 6A04 24QFDI必修7 CLM fll, LSI J A1,F0fiL,lAl.l DI /由工 DI AXpI flL,0FD16D7:EI6S0 CD7:GS00 D7:0Sie6D7:0830 ID7=0040 D7:S05S12 B8 F0S8 BA FEFVc 70 2DD32 8E DH47 69 ECB4 64DSC8寿鹄377504882:124-02 ee-

16、BF DG-CS30-1B 4S-0100-0B788 u0504E10000002004F4610002004200 噂 4 4 17 D 0 0002B4C00 4a40590102 8 0 0 01s00 A 2A 2840000S0SS02D17F7000 0 B4B3000:FL TH REi X FfiS MSOUI二、实验步骤1. 编辑源文件,经汇编连接产生EXE文件。2. 用DEBUG调试、检查、修改程序。3.三、实验习题与思考1 .编程实现:从键盘上输入两位十六进制数,转换成十进制数后显示在屏幕上。源代码:STACK SEGMENTDB 256 DUP()STACK ENDS

17、DATA SEGMENTDATA1 DB5,2 DUP()DATA2 DB2 DUP()DATA3 DB2 DUP()DATA ENDSCODE SEGMENTASSUMESS:STACK,DS:DATA,CS:CODEMOV AL,DISTART:MOV AX,DATAMOV DS,AXLEA DX,DATA1MOV AH,0AHINT 21H;输入字符串LEA SI,DATA1+2LEA DI,DATA2MOV CL,2;将ASC码转换为十六进制数LP1: MOV AL,SISUB AL,30HCMP AL,9JA LP2MOV DI,ALINC DIINC SIDEC CLJZ LP3J

18、NZ LP1LP2: SUB AL,7MOV DI,ALINC DIINC SIDEC CLJNZ LP1;将十六进制数转换成十进制数,并保存LP3: LEA DI,DATA2;AH=AX%100, AL=AX/100;保存百位数; 保存十位数; 保存个位数; 取百位数送显MOV BL,DI+1MOV CL,4SHL AL,CLADD AL,BLMOV DI,ALLEA SI,DATA3XOR AH,AHMOV CL,100DIV CLMOV SI,ALMOV AL,AHXOR AH,AHMOV CL,10DIV CLMOV SI+1,ALMOV SI+2,AH;屏幕显示十进制数LP4: MO

19、V DL,SIOR DL,30HMOV AH,02HINT 21HMOV DL,SI+1;取十位数送显OR DL,30HMOV AH,02HINT 21HMOV DL,SI+2;取个位数送显OR DL,30HMOVAH,02HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START输入:输出:运行图:abaPress 日呼 key to cent i nue .Z41Press a叩 Key to cant inue .2 .十进制数转换为七段码。为了在七段显示器上显示十进制数,需要把十进制数转换为七段代码。转换可采用查表法。设需要转换的十进制数已存放在起始地址为D

20、ATA1区域中,七段代码转换表存放在起始地址为TABLED中,转换结果存放到起始地址为DATA2区域。若待转换的数不是十进制数,则相应结果单元内容为00H。源代码:STACK SEGMENTDB 256 DUP()STACK ENDSDATA SEGMENTDATA1 DB0,123,4,5,678,9,10,11,12,13,14,15,A,B,C,$TABLE DB00H,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;实际数据定义必须在同一行DATA2 DB 16 DUP(0)COUNT EQU 2DATA ENDSCODE SEGMENTASSUME SS:STACK,DS:DATA,CS:CODESTART:MOVMOVAX,DATADS,AXSI,DATA1BX,DATA2LEALEALEADI,TABLEXORAH,AHLP1:MOVAL,SI;外循环DATA1指向卜一个INCSIMOVCX,16;内循环TABLE 16次LP2:CMPDI,ALJELP

温馨提示

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

评论

0/150

提交评论