设计程序,从键盘输入十进制数,结果存放在BUFFER中(无符号数,16位),再把结果以十六进制方式在屏幕输出。
只为记录汇编作业
题目:设计程序,从键盘输入十进制数,结果存放在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位),再把结果以十六进制方式在屏幕输出。相关推荐
- 学习汇编语言-输入十进制数转为十六进制和二进制
需求分析 十进制接收:依次输入十进制数,运算存储在bx中以回车键结束 转十六进制:依次出栈十进制数,循环左移十进制,al转换十六进制,末尾拼接H 转二进制:利用寄存器除2取余实现末尾拼接B 难点: 十 ...
- C语言:从键盘输入一些数,求所有正数之和。当输入负数时,程序结束。
/*从键盘输入一些数,求所有正数之和.当输入负数时,程序结束*/ #include <stdio.h> void main() {float x,sum=0;printf("请输 ...
- 5位评委对参赛选手进行打分,将所有的打分结果存储到对应类型的数组中, 将所有的评分结果去除一个最低分,去除一个最高分,然后获取的平均分数为 选手的最终得分.设计程序,用键盘输入5位评委的评分,并打印输
5位评委对参赛选手进行打分,将所有的打分结果存储到对应类型的数组中, 将所有的评分结果去除一个最低分,去除一个最高分,然后获取的平均分数为 选手的最终得分.设计程序,用键盘输入5位评委的评分,并打印输 ...
- 打印倒三角形——固定行数与键盘输入行数
打印倒三角形 一.固定行数-5行 思路:将整个三角形分成三部分,图中已分别用1.2.3标明.代码中要使用3个for循环,第一个for循环打印内容以"空格"形式展示,即左边的直角三角 ...
- 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数(Java)
package Four; /**题目描述* 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数* B就是A的二进制逆序数* 输入一个1000位以内的十进制整数 * */imp ...
- 编程从键盘输入一个字符串,统计该字符串中从‘a‘到‘z‘共26个小写字母各自出现的次数, 将结果存入数组中,并输出
/*编程从键盘输入一个字符串,统计该字符串中从'a'到'z'共26个小写字母各自出现的次数, 将结果存入数组中,并输出*/ #include<stdio.h> #include<st ...
- 28.【C语言】键盘输入一句英文,统计句子中每个字母出现的次数(不区分大小写,一律按小写显示)(Demo)
问题描述: 键盘输入一句英文,统计句子中每个字母出现的次数(不区分大小写,一律按小写显示) 算法思想 用一个字符数组str[ ]获取输入的整个字符串,用一个大小为26的整型数组alp[ ]用于存放统计 ...
- 怎样把DataGrid存放在ViewState中的无用数据卡掉
作者:无间道的博客http://www.cnblogs.com/wangsaokui/articles/10031.html 怎样把 DataGrid 存放在 ViewState 中的无用数据(有时候 ...
- C++中无符号数与有符号数的转换
C++中的无符号数与有符号数的转换 1.无符号数转为有符号数 unsigned short int a = 50000;signed short int b = 0;b = a;cout <&l ...
最新文章
- pytest框架安装(MacOS)
- adams齿轮齿条怎么定义接触_在SolidWorks里对标准齿轮、齿条的修改应用
- struts2中把action中的值传递到jsp页面的例子
- ESP32 各种时钟参数值设置
- Ajax请求SSM后台时提示:Invalid character found in the request target. The valid characters are defined in RF
- [云炬创业基础笔记]第二章创业者测试11
- 运营商视角的物联网商业模式-物联网操作系统篇
- 搭建卷积神经网络怎么确定参数_AI入门:卷积神经网络
- js控制a标签点击事件 触发下载
- Node.js Domain 模块
- WORD如何自动给标题添加编号?
- IDEA中控制台中文乱码问题
- libqrencode 3.4.3 发布,二维码的C解析库
- mysql 直方图_MySQL直方图
- bzoj3670 [Noi2014]动物园
- FFmpeg + SDL 的视频播放器的制作视频(雷神,雷霄骅)
- There are 1 missing blocks. The following files may be corrupted:
- 剑道独尊 无上剑意(下)
- 小米OJ12月常规赛“数数字”题目详解与SG函数SG定理个人理解
- 【翻译】Wide Deep Learning for Recommender Systems--推荐系统的广泛深度学习