MOV ES:[DI], AL INC SI INC DI DEC CX JNZ NEXT PUSH ES
POP DS ;将附加段寄存器的段值赋给数据段寄存器 MOV DX, OFFSET MSD MOV AH, 9 INT 21H
MOV AX, 4C00H ;利用DOS功能调用返回DOS状态 INT 21H
CODE ENDS END START
将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示:
MOV BX, 0 MOV CX, LEN
NEXT: MOV AL, MSR[BX]
MOV ES:MSD[BX], AL INC BX LOOP NEXT
四、实验步骤
1. 运行Tddebug软件,选择Edit菜单编写实验程序;
2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、
连接;
3. 使用Rmrun菜单中的Run,运行程序,观察运行结果; 4. 使用Rmrun菜单中的Debug,调试程序,观察调试过程中,
数据传输指令执行后,各寄存器及数据区的内容; 5. 更改数据区中的数据,考察程序的正确性。
五、实验报告内容及要求
在应用环境下调试,链接,运行程序。显示出的程序结果:
第 6 页
六、实验思考
进一步熟悉了Tddebug调试环境和Turbo Debugger的使用, 了解和掌握与数据有关的不同寻址方式。
第 7 页
实验三 数码转换程序实验
一、实验目的
掌握不同进制数及编码相互转换的程序设计方法。
二、实验所用设备
PC微机一台。
三、实验内容
计算机输入设备输入的信息一般是由ASCII码或BCD码表示的
数据或字符,CPU用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。计算机与外设间的数码转换关系如图3-1所示,数码对应关系如表3-1所示。
图3-1 计算机与外设间的数码转换关系
1.将ASCII码表示的十进制数转换为二进制数
十进制数可以表示为:Dn×10n+Dn-1×10n-1+?+D0×100 =Di×10i 其中Di代表十进制数1、2、3?9、0。
上式可以转换为:
ΣDi×10i=((?(Dn×10+Dn-1)×10)+Dn-2)×10+?+D1)×10+D0
由上式可归纳十进制数转换为二进制的方法:从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数结
第 8 页
果。
本实验要求将缓冲区中的一个五位十进制数00012的ASCII码转换成二进制数,并将转换结果按位显示在屏幕上。转换过程的参考流程如图3-2所示。
表3-1 数码转换对应关系
2.将十进制数的ASCII码转换为BCD码
本实验要求将键盘输入的一个五位十进制数54321的ASCII码存放入数据区中,转换为 BCD 码后,并将转换结果按位分别显示于屏幕上。若输入的不是十进制数的ASCII码,则输出“FF”。提示:一字节ASCII码取其低四位即变为BCD码。转换部分的实验流程参见3-3。
3.将十六进制数的ASCII码转换为十进制数
十六位二进制数的值域为0-65535,最大可转换为五位十进制数。五位十进制数可表示为:
ND=D4×104+D3×103+D2×102+D1×10+D0
因此,将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1-D4,并将它们转化为ASCII码。
第 9 页
图3-2 十进制ASCII转换为
二进制数参考流程
图3-3 十进制ASCII转换为
BCD码参考流程
本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转换结果显示在屏幕上。转换部分的实验流程参见图3-4。 4.BCD码转换为二进制码
本实验要求将四个二位十进制数的BCD码存放在某一内存单元中,转换出的二进制数码存入其后的内存单元中,转换结束,送屏幕显示。转换部分的实验流程参见3-5。
四、实验步骤
1. 运行Tddebug软件,选择Edit菜单编写实验程序;
2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、
连接;
3. 使用Rmrun菜单中的Run,运行程序,观察运行结果; 4. 使用Rmrun菜单中的Debug,调试程序,观察调试过程中,
数据传输指令执行后,各寄存器及数据区的内容;
第10页