只为记录汇编作业

题目:设计程序,从键盘输入十进制数,结果存放在BUFFER中(无符号数,16位),再把结果以十六进制方式在屏幕输出。

例如:若键盘输入: 65534;则转换完,屏幕输出:FFFE

代码:

DATA SEGMENTBUFFER DW 0 CRLF DB 10,13,'$'ANS DB 6 DUP(0)  ;用来记录16进制的输出LEN DB 0         ;LEN 记录 ans的循环次数
DATA ENDS
CODE SEGMENTASSUME CS:CODE,DS:DATA
START:MOV AX,DATAMOV DS,AXXOR BX,BXXOR AX,AXF:MOV AH,1INT 21HCMP AL,'0';判断是否是回车JL GCMP AL,'9'JG GSUB AL,30HCBW        ;转换成字类型;以下代码意思是当前有sum 当输入一个x时;sum=sum*10+x;原本x放在AX中 sum放在BX中;由于MUL 10表示 AX=AX*10 因此我先把AX和BX的值相互交换 在执行MUL10;最后让AX+BX 再把AX和BX的值换回来即可XCHG AX,BX ;交换ax,bx的值MOV CX,10  ;MUL CX     ;乘10   AX=AX*10 <==> sum=sum*10XCHG AX,BX ;此时BX是sum ax是xADD BX,AX  ;sum=sum+xJMP F
G:  ;是回车MOV DX,OFFSET CRLF ;输出换行MOV AH,9INT 21H MOV BUFFER,BX   ;输入的数据存入buffer里XOR AX,AX       ;ax清零MOV AX,BX       ;把bx的值给axXOR CX,CX       ;cx清零XOR BX,BX       ;bx清零MOV BX,16       ;把16赋值给bxMOV DI,OFFSET ANS ;把di指向ans首地址
Q:   XOR DX,DXDIV BX         ;ax/bx ax是商 dx是余数CMP DL,10      ;先比较dl是否>=10 如果大于则转换成A-F 否则直接+30h存入JGE CHANGE    ADD DL,30H
CONTINUE:MOV [DI],DL    ;此时[DI]中存的是 0-9 A-F的ascll码INC DI         ;DI+1INC LEN        ;LEN+1,这个LEN用来记录ANS输出的次数CMP AX,0       ;检查商是否为0 如果为0 表示已经被除尽JNE Q          ;如果不为0则继续循环DEC DI         ;DI-1 此时[DI]是输出的最高位MOV CL,LEN     ;把输出次数LEN放入CL中PRINTF:           ;输出ans里面的数据MOV DL,[DI]    ;输出[DI]的内容  MOV AH,2INT 21HDEC DILOOP PRINTF      JMP OVER       ;跳转至结束程序
CHANGE:           ;10-15 转换成ascll码中的A-FSUB DL,10ADD DL,'A'JMP CONTINUE
OVER:   MOV AH,4CH       ;结束程序INT 21H
CODE ENDSEND START

设计程序,从键盘输入十进制数,结果存放在BUFFER中(无符号数,16位),再把结果以十六进制方式在屏幕输出。相关推荐

  1. 学习汇编语言-输入十进制数转为十六进制和二进制

    需求分析 十进制接收:依次输入十进制数,运算存储在bx中以回车键结束 转十六进制:依次出栈十进制数,循环左移十进制,al转换十六进制,末尾拼接H 转二进制:利用寄存器除2取余实现末尾拼接B 难点: 十 ...

  2. C语言:从键盘输入一些数,求所有正数之和。当输入负数时,程序结束。

    /*从键盘输入一些数,求所有正数之和.当输入负数时,程序结束*/ #include <stdio.h> void main() {float x,sum=0;printf("请输 ...

  3. 5位评委对参赛选手进行打分,将所有的打分结果存储到对应类型的数组中, 将所有的评分结果去除一个最低分,去除一个最高分,然后获取的平均分数为 选手的最终得分.设计程序,用键盘输入5位评委的评分,并打印输

    5位评委对参赛选手进行打分,将所有的打分结果存储到对应类型的数组中, 将所有的评分结果去除一个最低分,去除一个最高分,然后获取的平均分数为 选手的最终得分.设计程序,用键盘输入5位评委的评分,并打印输 ...

  4. 打印倒三角形——固定行数与键盘输入行数

    打印倒三角形 一.固定行数-5行 思路:将整个三角形分成三部分,图中已分别用1.2.3标明.代码中要使用3个for循环,第一个for循环打印内容以"空格"形式展示,即左边的直角三角 ...

  5. 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数(Java)

    package Four; /**题目描述* 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数* B就是A的二进制逆序数* 输入一个1000位以内的十进制整数 * */imp ...

  6. 编程从键盘输入一个字符串,统计该字符串中从‘a‘到‘z‘共26个小写字母各自出现的次数, 将结果存入数组中,并输出

    /*编程从键盘输入一个字符串,统计该字符串中从'a'到'z'共26个小写字母各自出现的次数, 将结果存入数组中,并输出*/ #include<stdio.h> #include<st ...

  7. 28.【C语言】键盘输入一句英文,统计句子中每个字母出现的次数(不区分大小写,一律按小写显示)(Demo)

    问题描述: 键盘输入一句英文,统计句子中每个字母出现的次数(不区分大小写,一律按小写显示) 算法思想 用一个字符数组str[ ]获取输入的整个字符串,用一个大小为26的整型数组alp[ ]用于存放统计 ...

  8. 怎样把DataGrid存放在ViewState中的无用数据卡掉

    作者:无间道的博客http://www.cnblogs.com/wangsaokui/articles/10031.html 怎样把 DataGrid 存放在 ViewState 中的无用数据(有时候 ...

  9. C++中无符号数与有符号数的转换

    C++中的无符号数与有符号数的转换 1.无符号数转为有符号数 unsigned short int a = 50000;signed short int b = 0;b = a;cout <&l ...

最新文章

  1. pytest框架安装(MacOS)
  2. adams齿轮齿条怎么定义接触_在SolidWorks里对标准齿轮、齿条的修改应用
  3. struts2中把action中的值传递到jsp页面的例子
  4. ESP32 各种时钟参数值设置
  5. Ajax请求SSM后台时提示:Invalid character found in the request target. The valid characters are defined in RF
  6. [云炬创业基础笔记]第二章创业者测试11
  7. 运营商视角的物联网商业模式-物联网操作系统篇
  8. 搭建卷积神经网络怎么确定参数_AI入门:卷积神经网络
  9. js控制a标签点击事件 触发下载
  10. Node.js Domain 模块
  11. WORD如何自动给标题添加编号?
  12. IDEA中控制台中文乱码问题
  13. libqrencode 3.4.3 发布,二维码的C解析库
  14. mysql 直方图_MySQL直方图
  15. bzoj3670 [Noi2014]动物园
  16. FFmpeg + SDL 的视频播放器的制作视频(雷神,雷霄骅)
  17. There are 1 missing blocks. The following files may be corrupted:
  18. 剑道独尊 无上剑意(下)
  19. 小米OJ12月常规赛“数数字”题目详解与SG函数SG定理个人理解
  20. 【翻译】Wide Deep Learning for Recommender Systems--推荐系统的广泛深度学习

热门文章

  1. 快速复习51单片机的外部中断、计数/定时器中断和串行口中断,加代码实现
  2. wave2lip训练
  3. [自动化-脚本]001.自动领淘金币:Anyweb模拟操作
  4. USB驱动的概念介绍
  5. Vue2学习笔记(尚硅谷张天禹老师)day-01
  6. 谈谈Linux系统CP命令如何做到0.2秒复制100G大文件?
  7. 那些年,我读过的技术书(Python篇)
  8. AI非结构化数据处理和分析软件公司Zilliz宣布完成4300万美元B轮融资
  9. Zilliz 上榜「中国科创好公司」
  10. 灵创系统服务器,服装ERP-灵创软件-ICSCM供应链管理系统