汇编程序实验:ASCII码到二进制与十进制到BCD转换

版权申诉
0 下载量 181 浏览量 更新于2024-06-20 收藏 514KB PDF 举报
"汇编程序实验源程序.pdf" 这个文件包含了两个汇编语言程序,用于将ASCII码表示的十进制数转换成不同的形式。第一个程序(A3-1.asm)是将ASCII码的十进制数转换为二进制数,而第二个程序(A3-2.asm)则是将ASCII码的十进制数转换为BCD码。 在第一个程序(A3-1.asm)中: 1. 定义了栈段STACK1和数据段DDATA。 2. 数据段DDATA包含了一个字符串`MES1`,用于提示用户,以及一个缓冲区`BUF`,存储输入的ASCII码数字。 3. `START`是程序的入口点,首先设置数据段地址到DS寄存器,然后指针指向缓冲区的起始位置。 4. 初始化BX为10(即2的4次方),CX为4(因为我们要处理每一位),AH为0,AL为缓冲区中的第一个字符。 5. 在循环A1中,首先将AL中的ASCII码减去'0'(30H)得到实际的十进制值,然后乘以10(BX),再加上下一个ASCII码减去'0'的值。这实现了将ASCII码转换为十进制数的过程。 6. 转换后的结果存回缓冲区,并通过调用`SHOW`子程序显示高位和低位的二进制数。 7. `SHOW`子程序用于显示单个字符,它首先取出AL的高4位,如果大于或等于10,则加7使其对应于'0'-'9'的ASCII码,然后调用DOS中断21H显示字符。接着处理低4位并进行同样的操作。 8. 最后,调用退出DOS的中断4C00H结束程序。 在第二个程序(A3-2.asm)中: 1. 与第一个程序类似,定义了栈段和数据段,并初始化数据段地址。 2. 数据段包含提示字符串`MES1`和一个包含ASCII码数字的缓冲区`BUF`。 3. `START`开始,同样设置了DS寄存器,并指针指向缓冲区。 4. 这个程序的目的是将ASCII码转换为BCD码,BCD码是每两位表示一个十进制数字。程序首先将输入的ASCII码减去'0',然后根据是否大于10(即大于'A'),决定是否需要加上7来得到正确的BCD码。 5. 与第一个程序不同的是,转换后的BCD码直接存储回缓冲区,没有显示过程,因为BCD码通常用于后续的计算或显示操作。 6. 同样,程序最后调用退出DOS的中断4C00H结束。 这两个程序展示了如何在汇编语言中处理数字的转换,包括从ASCII码到二进制和BCD码的转换,这对于理解计算机底层数据处理非常有帮助。