一、实习题目:ASCⅡ码转二进制码程序实验

二、实习目的:掌握码制转换的基本原理及相应的转换程序的编写方法。

三、实习内容:将ASCⅡ码数据转换成二进制数据。要求从键盘上输入十进制整数(假定范围0~32767),然后转换成二进制格式存储,并二进制形式输出。

四、编程思想:

由于汇编语言中,初始时,没有直接输入多位十进制数的命令,所以,需要将输入的多位十进制数用一字节来表示一

位,即用五个字节将之保存,然后编写程序将之转化为用二进制表示。以下几步为程序编写步骤:

1、将键盘上输入的五位十进制数保存在 num[5]中,其中num数据类型为 DB;

2、将数字字符转换为对应数字;

3、由于32367可用十六位二进制保存,则定义 DW 类型变量 result,并初始化为 0,并使用如下思想将之转

换为二进制(计算机中底层表示为二进制)。

              for(int i = 0;i < 5;++i) { result *= 10; result += num[i];}

4、至此,result在计算机底层表示的二进制即为要转换的二进制,此时,将之有高位到低位输出即可。而输

时,使用左移位指令 SHL,移出的最高位保存在标志位 CF 中,接下来只需根据 CF 的值输出0/1。(CF为0

时,输出字符0;CF为1时,输出字符1)

五、代码:

        

data segmentnumber    db    5 dup('0');  存储输入的五位十进制数mulNum    dw    10;        十进制进位数result    dw    0;         存放转换之后的结果msgOne    db    0ah,0dh,'Input a number(0 - 32767):','$'msgTwo    db    0ah,0dh,'The result is:','$'
data endscode segmentassume DS:data,CS:code
start:mov ax,data;mov DS,ax;lea dx,msgOne;         输出msgOne中内容mov ah,09h;int 21h;mov cx,5;              最多输入五位十进制数mov bx,0;              初始化bx为number的索引
inputNum: mov ah,01h;            从键盘输入一个字符int 21h;cmp al,0dh;            若输入字符为回车,则跳转至startTran处jz startTran;           mov number[bx],al;     将输入的字符存入numberinc bx;                bx++loop inputNumstartTran:mov cx,bx;             初始化cx循环次数mov bx,0;              初始化bx为number的索引
tranOne:mov ax,result;         result * 10mul mulNum;mov result,ax;and number[bx],0fh;    将数字字符转换为相应数字mov ah,0;              result += number[bx]mov al,number[bx];add [result],ax;inc bx;                bx++loop tranOnelea dx,msgTwo;         输出msgTwo中内容mov ah,09h;int 21h;mov cx,16;
showResult:shl result,1;          将ax最高位移除,存储在cf中jnc outputZero;mov dl,'1';            如果cf不为0,则输入'1'mov ah,02h;int 21h;jmp next;outputZero:                    mov dl,'0';            否则输入'0'mov ah,02h;int 21h;
next:loop showResultmov ah,4ch;            程序结束int 21h;code ends
end start</span>


六、运行结果:

注意:这里虽说要求输入0-32767之间的数,但由于此程序使用2字节存储转换后的二进制,所以,此程序可以输入的最大数字为65535.




汇编-ASCⅡ码转二进制码相关推荐

  1. 十六进制转换为ASC码

    单片机能够识别与处理的是二进制码,一位十六进制数在内存中的表现为四位二进制数.至于ASC码与BCD码,通俗来讲,前者是某个数字.字母.或符号的代码,固定且唯一,而后者则是二进制编码的十进制数.举个栗子 ...

  2. AX寄存器中存放着16位二进制数。试编写一个汇编语言程序,将这4位十六进制数分别转换为相应的ASCⅡ码,并依次存放到PLUS数组的4个字节中去,要求用调用子程序的方法实现

    [微机原理]-汇编题 AX寄存器中存放着16位二进制数.试编写一个汇编语言程序,将这4位十六进制数分别转换为相应的ASCⅡ码,并依次存放到PLUS数组的4个字节中去,要求用调用子程序的方法实现. 方法 ...

  3. java asc码_Java中ASC码与字符互相转化

    package com.ljq.test; /** * Java中ASC码与字符互相转化 * * @author jiqinlin * */ public class ASCTest { privat ...

  4. php中ASCⅡ码的妙用

    最近在技术群中有位兄弟提出了一个问题: 想让自增的ID格式化为 A001--A999 B001--B999 -- Z001--Z999, 我最初的构思是循环中,分if条件判断出来进行A--Z字母, 但 ...

  5. bcd转ascii码 流程图_BCD码与ASC码互转 | 学步园

    1.BCD码转换为ASC码: BCD转换为ASC比较简单,移位进行位与即可. stringBCD2ASCII( const string &str ) { string res ; for( ...

  6. java如何比较字符asc_Java中的Asc码与字符互相转化

    Java中的Asc码与字符互相转化 package com.test; public class Jm1 { private static int asnum; private static char ...

  7. 华为机试--字符串ASC码+偏移量实现加密

    华为机试–字符串ASC码+偏移量实现字符串加密的JS实现 题目描述:给出原文字符串str,通过对字符串的每个字母进行改变来实现加密,加密方式是在每一个字母str[i]偏移特定数组元素a[i]的量.数组 ...

  8. matlab中asc格式,matlab将图片转换成asc码txt文本格式 | 学步园

    matlab将图片转换成asc码 function img2txt(imfile,varargin); % using an ASCII character for every stepx pixel ...

  9. 按ASC码对字符串排序

    题目:从键盘接收一行字符串,然后按照字符顺序(ASC码)从小到大进行排序后删除重复的字符.要求使用函数 int rankChar(char str[]) { } 完成,函数返回值为删除字符的个数,打印 ...

最新文章

  1. Exchange 2007 配置POP3
  2. 【ZooKeeper Notes 15】Watcher使用的注意事项
  3. aidl demo调用原理
  4. 性能媲美BERT却只有其1/10参数量? | 近期最火模型ELECTRA解析
  5. 【Android.mk】android编译系统makefile文件Android.mk的写法
  6. ANSYS——常见梁的后处理方法(弯曲应力、弯矩、轴力等的显示)
  7. [PAT乙级]1009 说反话
  8. mac 通过 homebrew 安装mongodb
  9. 130701基础练习-first
  10. html列表远点小,HTML小知识点积累(示例代码)
  11. 夹具PHP,PHP类的静态(static)方法和静态(static)变量
  12. 金山安全联手方正科技 为用户提供最佳互联网安全环境
  13. 数字信号处理-基础一
  14. VTM3.0代码阅读:CU、PU、TU
  15. Typora保存文章到本地并查看源代码的方法(简)
  16. 约瑟夫环!编 号是1,2,??,n的n个人按照顺时针方向围坐一圈,每个人只有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个仍开始顺时针方向 自1开始顺序报数,报到m时停止报数。
  17. git master和main 的纠缠
  18. PHP连接操作sqlserver
  19. OpenGL: 位图字体
  20. unable to prepare for development xcode 13

热门文章

  1. 微信公众平台开发测试账号配置URL失败的问题
  2. 服务器 稳定 重要性,云服务器 重要性
  3. 计算机凭据分配在哪里,电脑策略没有凭据分配怎么办
  4. 【MySQL】6、Delete From删除语句
  5. Windows10系统自带中文输入法繁体改为简体
  6. 差分隐私 python_差分隐私
  7. Wormhole for mac(在Mac上控制iOS和Android设备)
  8. [200902] 条件概率与独立事件
  9. 重放攻击(Replay Attacks)
  10. python网络爬虫一