实验一数码转换编程及程序调试.docx
《实验一数码转换编程及程序调试.docx》由会员分享,可在线阅读,更多相关《实验一数码转换编程及程序调试.docx(17页珍藏版)》请在冰豆网上搜索。
实验一数码转换编程及程序调试
个人采集整理资料,仅供沟通学习,勿作商业用途
实验一数码变换编程及程序调试
一、实验目的
掌握不一样进制数及编码互相变换的程序设计方法,加深对数码变换
的理解。
熟习程序调试的方法。
二、实验设施
Pc微机一台,TD-PITE实验装置一套。
三、实验内容及步骤
计算机输入设施输入的信息一般是由ASSII码或BCD码表示的
数据或字符,CPU一般均用二进制数进行计算或其余信息办理,处
理结果的输出又一定依据外设的要求变成ASCII码、BCD码或七段
显示码等。
所以,在应用软件中,各种数制的变换是必不行少的。
b5E2RGbCAP
计算机与外设间的数制变换关系如下图2-1所示,数制对应关
系如表2-1所示。
键盘
ASCII码
ASCII码
CRT显示
主
ASCII码
光电机
ASCII码
打印机
机
拨码开关BCD码BCD码多段显示
数据开关
二进制
二进制
位显示
1/12
个人采集整理资料,仅供沟通学习,勿作商业用途
图2-1数制变换关系
表1数制对应关系表
十六进BCD码二进制ASCII码七段码
制数
机器码
0
0000
0000
30H
40H
3FH
1
0001
0001
31H
79H
06H
2
0010
0010
32H
24H
5BH
3
0011
0011
33H
30H
4FH
4
0100
0100
34H
19H
66H
5
0101
0101
35H
12H
6DH
6
0110
0110
36H
02H
7DH
7
0111
0111
37H
78H
07H
8
1000
1000
38H
00H
7FH
9
1001
1001
39H
18H
67H
A
1010
41H
08H
77H
B
1010
42H
03H
7CH
C
1011
43H
46H
39H
D
1100
44H
21H
5EH
E
1110
45H
06H
79H
F
1111
46H
0EH
71H
1.将ASCII码表示的十进制数变换为二进制数十进制表示为:
Di代表十进制数0,1,2,,9;
上式变换为:
2/12
个人采集整理资料,仅供沟通学习,勿作商业用途
由此可概括十进制数变换为二进制数的方法:
从十进制数的最高位
Dn开始作乘10加次位的操作,挨次类推,则可求出二进制数的结
果。
p1EanqFDPw
参照流程:
实验程序:
PUBLICSADD
SSTACKSEGMENTSTACK
DW64DUP(?
>
SSTACKENDS
DATASEGMENT
SADDDB30H,30H,32H,35H,36H。
十进制数:
00256
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
3/12
个人采集整理资料,仅供沟通学习,勿作商业用途
START:
MOVAX,DATA
MOVDS,AX
MOVAX,OFFSETSADD
MOVSI,AX
MOVBX,000AH
MOVCX,0004H
MOVAH,00H
MOVAL,[SI]
SUBAL,30H
A1:
IMULBX
MOVDX,[SI+01]
ANDDX,00FFH
ADCAX,DX
SUBAL,30H
INCSI
LOOPA1
A2:
JMPA2
CODEENDS
ENDSTART
实验步骤:
<1)绘制程序流程图,编写实验程序,经编译、链接无误后装入系
统;
4/12
个人采集整理资料,仅供沟通学习,勿作商业用途
<2)待变换数据寄存于数据段,依据自己要求输入,默以为30H,
30H,32H,35H,36H;
<3)运转程序,而后停止程序;
<4)查察AX寄存器,即为变换结果,应为:
0100;
<5)频频试几组数据,考证程序的正确性。
2.将十进制数的ASCII码变换为BCD码
从键盘输入五位十进制数的ASCII码,寄存于3500H开端的内存单元中,将其变换为BCD码后,再按位分别存入350AH开端的内存单元内。
若输入的不是十进制的ASCII码,则对应寄存结果的单元内容为“FF”。
由表1可知,一字节ASCII码取其低四位即变成BCD
码。
DXDiTa9E3d
实验程序:
STACKEGMENTSTACK
DW64DUP(?
>
STACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVCX,0005H
。
变换位数
MOVDI,3500H
。
ASCII码首地点
A1:
MOVBL,0FFH
。
将错误标记存入BL
MOVAL,[DI]
CMPAL,3AH
5/12
个人采集整理资料,仅供沟通学习,勿作商业用途
JNBA2。
不低于3AH则转
A2
SUBAL,30H
JBA2。
低于30H则转A2
MOVBL,AL
A2:
MOVAL,BL。
结果或错误标记送入AL
MOV[DI+0AH],AL。
结果存入目标地点
INCDI
LOOPA1
A3:
JMPA3
CODEENDS
ENDSTART
实验步骤:
<1)自己绘制程序流程图,而后编写程序,编译、链接无误后装入
系统;
<2)在3500H~3504H单元中寄存五位十进制数的ASCII码,即:
键
入E3500后,输入31,32,33,34,35;RTCrpUDGiT<3)运转程序,而后停止程序运转;
<4)键入D350A,显示运行结果,应为:
0000:
350A0102030405CC5PCzVD7HxA
<5)频频测试几组数据,考证程序功能。
3.将十六位二进制数变换为ASCII码表示的十进制数
6/12
个人采集整理资料,仅供沟通学习,勿作商业用途
十六位二进制数的值域为0~65535,最大可变换为五位十进制数。
五位十进制数可表示为:
Di:
表示十进制数0~9
将十六位二进制数变换为五位ASCII码表示的十进制数,就是求
D1~D4,并将它们变换为ASCII码。
自行绘制程序流程图,编写程
序可参照例程。
例程中源数寄存于3500H、3501H中,变换结果寄存
于3510H~3514H单元中。
jLBHrnAILg
实验程序:
STACKEGMENTSTACK
DW64DUP(?
>
STACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVSI,3500H。
源数据地点
MOVDX,[SI]
MOVSI,3515H。
目标数据地点
A1:
DECSI
MOVAX,DX
MOVDX,0000H
MOVCX,000AH。
除数10
DIVCX。
得商送AX,得余数送DX
7/12
个人采集整理资料,仅供沟通学习,勿作商业用途
XCHGAX,DX
ADDAL,30H
。
得Di得ASCII码
MOV[SI],AL
。
存入目标地点
CMPDX,0000H
JNEA1
。
判断变换结束否,未结束则转A1
A2:
CMPSI,3510H
。
与目标地点得首地点比较
JZA3
。
等于首地点则转A3,不然将节余地点
DECSI
。
中填30H
MOVAL,30H
MOV[SI],AL
JMPA2
A3:
JMPA3
CODEENDS
ENDSTART
实验步骤
<1)编写程序,经编译、链接无误后,装入系统;
<2)在3500H、3501H中存入0C00;
<3)运转程序,而后停止运转;
<4)检查运转结果,键入D3510,结果应为:
3030303132;
<5)可频频测试几组数据,考证程序的正确性。
4.十六进制数变换为ASCII码
8/12
个人采集整理资料,仅供沟通学习,勿作商业用途
由表1中十六进制数与ASCII码的对应关系可知:
将十六进制数
0H~09H加上30H后获得相应的ASCII码,AH~FH加上37H可获得
相应的ASCII码。
将四位十六进制数寄存于开端地点为
3500H的内
存单元中,把它们变换为ASCII码后存入开端地点为350AH的内存
单元中。
自行绘制流程图。
xHAQX74J0X
实验程序
SSTACKSEGMENTSTACK
DW64DUP(?
>
SSTACKENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVCX,0004H
MOVDI,3500H。
十六进制数源地点
MOVDX,[DI]
A1:
MOVAX,DX
ANDAX,000FH。
取低4位
CMPAL,0AH
JBA2。
小于0AH则转A2
ADDAL,07H。
在A~FH之间,需多加上7H
A2:
ADDAL,30H。
变换为相应ASCII码
MOV[DI+0DH],AL。
结果存入目标地点
DECDI
9/12
个人采集整理资料,仅供沟通学习,勿作商业用途
PUSHCX
MOVCL,04H
SHRDX,CL。
将十六进制数右移4位
POPCX
LOOPA1
A3:
JMPA3
CODEENDS
ENDSTART
实验步骤
<1)编写程序,经编译、链接无误后装入系统;
<2)在3500H、3501H中存入四位十六进制数203B,即键入E3500,
而后输入3B20;
<3)先运转程序,而后再停止运转;
<4)键入D350A,显示结果为:
0000:
350A32303342CC;
<5)频频输入几组数据,考证程序功能。
5.BCD码变换为二进制数
将四个二位十进制数的BCD码寄存于3500H开端的内存单元中,将
变换的二进制数存入3510H开端的内存单元中,自行绘制流程图并
编写程序。
LDAYtRyKfE
SSTACKSEGMENTSTACK
DW64DUP(?
>
SSTACKENDS
10/12
个人采集整理资料,仅供沟通学习,勿作商业用途
CODESEGMENT
ASSUMECS:
CODE
START:
XORAX,AX
MOVCX,0004H
MOVSI,3500H
MOVDI,3510H
A1:
MOVAL,[SI]
ADDAL,AL
MOVBL,AL
ADDAL,AL
ADDAL,AL
ADDAL,BL
INCSI
ADDAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPA1
A2:
JMPA2
CODEENDS
ENDSTART
实验步骤
11/12
个人采集整理资料,仅供沟通学习,勿作商业用途
<1)编写程序,经编译、链接无误后装入系统;
<2)将四个二位十进制数的BCD码存入3500H~3507H中,即:
先键
入E3500,而后输入0102030405060708;Zzz6ZB2Ltk
<3)先运转程序,而后停止运转;
<4)键入D3510显示变换结果,应为:
0C22384E;
<5)频频输入几组数据,考证程序功能。
声明:
全部资料为自己采集整理,仅限个人学习使用,勿做商业用
途。
12/12