用汇编语言实现从键盘输入一个字符,输出其对应的ASCII码

您所在的位置:网站首页 c语言输出ascll对应的字母 用汇编语言实现从键盘输入一个字符,输出其对应的ASCII码

用汇编语言实现从键盘输入一个字符,输出其对应的ASCII码

2024-07-07 23:09| 来源: 网络整理| 查看: 265

Hello,大家好呀!这是本人的第一篇博客,这学期正好在学汇编语言,上周老师布置了一个作业,用汇编语言实现从键盘输入一个字符,输出其对应的ASCII码。说实话,这个问题最开始的时候令我不知从何下手,明明用c语言只需要几行代码,用汇编来实现却显得十分困难。于是我便打开了CSDN,可搜索了半天却没找到想要的结果,于是只能靠自己解决了问题。现在将我的代码放到下面供大家参考。

这里还得提一下,我们教学使用的是Intel 8086体系的指令集。 

这是题目的要求:

这是代码:

data segment string db 6 dup(?) ;定义一个字符串用来保存每一位字符 data ends code segment assume cs:code,ds:data start: mov ax,data ;初始化段寄存器 mov ds,ax mov ah,1 ;从键盘输入一个字符 int 21H mov ah,0 ;这一步必须要写 mov bh,10 div bh add ah,30H mov string+4,ah ;将余数先保存到高位 cbw div bh add ah,30H mov string+3,ah cbw div bh add ah,30H mov string+2,ah mov string+5,'$' ;字符串结束标志 mov dl,0AH ;输出一个换行字符 mov ah,2 int 21H mov dx,offset string ;输出字符串 mov ah,9 int 21H mov ah,4cH mov al,0 int 21H code ends end start

这是运行的效果:

将上面的代码保存为ascii.asm然后编译为可执行文件ascii.exe

再在dosbox里执行ascii这个命令,就可以看到相应的结果了

 

现在,我来讲解一下代码的逻辑:

任何一个程序都需要输入和输出,这是最基本的要求。因此,第一步需要搞明白在汇编语言里如何进行输入和输出。

详情见以下链接:

汇编常用的INT 21H系统调用 - 简书 (jianshu.com)

在搞明白如何进行输入与输出后,就进入一个程序的核心步骤,如何通过运算将输入转换为对应的输出:

 

当我们从键盘输入一个字符后,字符的ASCII码就被存储到AL(al)寄存器里,比如,如果我们从键盘打一个A,那么此时AL寄存器里的数就是65,现在要解决的问题就是如何将数65转换为字符串'065',我们知道字符'0'的ASCII码值是48,而'1'的ASCII码值是49,按照这个规律,我们就可以得到解决思路了。我们可以先用65除以10,得到余数5,再把5加上48就得到了'5'的ASCII码值,将这个ASCII码值存入一个字符串的高位,然后将商继续除以10......

将上面的步骤总共进行三次就可以得到一个三位长度的字符串了。

然后进行输出即可。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3