汇编将输入的十进制数字转换成二进制,八进制,十六进制,代码写出来了,但是却无法正常运行 1C

data segment
mesg db 'please input :',0ah,0dh,'$'
buf db 5
db ?
db 5 dup(?)
buf1 db 5 dup('0')
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
lea dx,mesg ;在屏幕上显示mesg标号后的内容
mov ah,9
int 21h

mov bx,10

lea dx,buf  ;从键盘输入一个字符到缓冲区
mov ah,0ah
int 21h

mov si,offset buf+2 
mov di,offset buf1
mov cl,buf+1    ;将实际输入字符个数送入cl中

aga:
mov al,[si] ;将输入的第一个字符对应的ASCII码送入al中
sub al,30h ;获得输入的第一个数的原值
mov ah,0
xchg ax,[di]

mul bx

xchg [di],ax
add [di],ax
inc si
loop aga
mov bx,[di]
mov dl,0ah
mov ax,2
int 21h
mov dl,0dh
int 21h
mov cx,16
last:
mov dl,'0'
rol bx,1
jnc next ;与cf标志有关,若不进位,即cf=0,则跳转
mov dl,'1'
next:
mov ah,2 ;显示dl中的字符
int 21h
loop last
mov ah,2
mov dl,0ah
int 21h
mov dl,0dh
int 21h ;换行
mov cx,4
aga2:
push cx
mov cl,4
rol bx,cl ;将bh的高4位循环左移入al的低4位中
pop cx
mov dx,bx
and dl,0fh ;将dl的高4位清零,保留dl的低4位,即bh中的高4位
cmp dl,10
jc then ;进位则跳转,即dl小于10
add dl,7
then:
add dl,30h
mov ah,2
int 21h
loop aga2
mov dl,0ah
int 21h
mov dl,0dh
int 21h ;换行

;========================转换为8进制==============================
mov dl,'1' ;假设bx=1100 0000 0000 0000
rol bx,1 ;逻辑循环左移则产生进位
jc then1 ;产生进位后则跳转到then1,显示8进制第一位为1
mov dl,'0' ;未产生进位,则第一位显示0
then1:
mov ah,2
int 21h
mov cx,5 ;(16-1)/3=5,3个二进制数表示一个八进制数
aga3:
push cx
mov cl,3
rol bx,cl ;循环左移3位
pop cx
mov dx,bx
and dl,07h ;07h=0000 0111b,将dl的高4位清零,低4位的第一位清零
add dl,30h
mov ah,2
int 21h
loop aga3

mov ah,4ch
int 21h

code ends
end start


不知道错误在哪里...
还请大神指教

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
将十六进制字符串转换成十进制数字
Write a function that parses a hex number as a string into a decimal integer.The function header is as follows: int parseHex(const char * const hexString) For example, hexString “A5” is 165 (10*16+5=16
十六进制字符串转换成十进制数字
int ChangeNum(char* str, int length){ char  revstr[16] = { 0 };  //根据十六进制字符串的长度,这里注意数组不要越界   int   num[16] = { 0 }; int   count = 1; int   result = 0; int tmp = 0; strcpy(revstr, str); for (int i = le...
C语言二进制转换成八进制或十六进制
C语言实现二进制向八进制和十六进制转换 二进制转换成十进制 再将十进制转换成R进制
python(十进制转换成二进制、八进制、十六进制)(正则)
  #coding=utf-8 import re print("十进制转换成二进制、八进制、十六进制") num = input("请输入一个十进制的整数:") pattern = re.compile(r'[^0-9]+') if(re.search(pattern,num)):     print("输入的格式不正确") else:     num = int(num)     #十...
二进制、八进制、十六进制与十六进制的转换
1、number bindec ( string binary_string )  --  二进制转换为十进制 返回 binary_string 参数所表示的二进制数的十进制等价值。   2、string decbin ( int number ) -- 十进制转换为二进制 返回一字符串,包含有给定 number 参数的二进制表示。所能转换的最大数值为十进制的 4294967...
二进制、八进制、十进制、十六进制
一、 十进制与二进制之间的转换  (1) 十进制转换为二进制,分为整数部分和小数部分    ① 整数部分    方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。下面 举例:        例:将十进制的168转换为二进制     ...
 二进制、八进制、十六进制
NULL 博文链接:https://self4j.iteye.com/blog/1002221
java运算符及二进制、八进制、十六进制
前提1:假设“1个二进制位”等同于“1位二进制”。 前提2:一个字节是8个二进制位 为什么一个字节是8个二进制位呢? 首先,据说字节,原意是用于表示一个完整的字符。 计算机出现之前,用的是BSD编码,用4个二进制位表示一个字符。所以可以说,当时一个字节是4个二进制位。 后来随着需求的增加,4个二进制位所能表达的范围过小(只能表示16中字符),进而出现了6个二进制位表示一个字节的编码:BC
二进制 八进制 十六进制
生活中我们普遍用十进制,逢十进一。同理,二进制八进制和十六进制是逢二进一、逢八进一、逢十六进一。十进制是便于人理解而二进制是便于电脑理解。二进位制在计算机内部使用是再自然不过的。但在人机交流上,二进位制有致命的弱点——数字的书写特别冗长。二进位制和八进位制、二进位制和十六进位制之间的换算都十分简便,而采用八进位制和十六进位制又避免了数字冗长带来的不便,所以八进位制、十六进位制已成为人机交流中常用的
python:二进制、八进制、十六进制
表示这三个进制数字时,必须以0开头,后跟不同进制的字母 二进制:0b**** 如:0b11011 二进制转换成十进制: print(int("11011",2)) 十进制转换成二进制:bin 八进制:0o**** 十进制转换成八进制oct 十六进制:0x**** 十进制转换成十六进制:hex 具体实例: #输出二进制数 print(0b110011) #输出八进制数 print...
二进制,八进制,十进制,十六进制
二进制,十进制,八进制,十六进制的转换 1.十进制数转换为其他进制数 十进制转换二进制——除二取余倒序 将十进制数除以2,得到商和余数,把商继续除以2,直到商为0。 然后将所有的余数倒序排列。 十进制转换八进制——除八取余倒序 十进制转换十六进制——除十六取余倒序 2.其他进制数转换为十进制数 二进制转换为十进制—— ...
二进制,八进制,十六进制详解
转自《从零开始学C语言》一书,作者戴晟辉,祝明慧等
二进制、八进制、十进制和十六进制
1. Oracle公司于2008年收购Java语言的发明者Sun公司,成为Java的拥有者rn2. 课程源于甲骨文雇主企业的需求,真正符合企业用人需要rn3. 由获取甲骨文原厂国际认证的讲师授课rn4. 理论与实践并重,多个企业真实项目案例贯穿其中rn5. 真正的Oracle原厂教材,完整规范的技术知识体系rn6. Oracle标准课程与国内主流技术的有机整合,实用性与指导性并重
二进制、八进制、十六进制
二进制、八进制、十六进制,简介: 这是一节“前不着村后不着店”的课。不同进制之间的转换纯粹是数学上的计算。不过,你不必担心会有么复杂,无非是乘或除的计算。 生活中其实很多地方的计数方法都多少有点不同进制的影子。 比如我们最常用的10进制,其实起源于人有10个指头。如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制。 至于二进制……没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。 生活中还有:七进制,比如星期。十六进制,比如小时或“一打”,六十进制,比如分钟或角度……
二进制到八进制到十六进制换算
方法1:通通把非十进制的转换成十进制,再从十进制转换成其他进制 X进制转换成十进制公式参考: https://mp.csdn.net/mdeditor/83115368# 1.这里的X进制转换到十进制,是通过 二进制-十进制转换表快速计算 2.具体是二进制 1010100 右对齐十进制表, 该二进制含1的对应十进制数相加,得出十进制结果 3.十进制再转换成X进制 十进制转换成X进制参考...
二进制 八进制 十六进制 无符号整数
基础 八进制 0开头 十六进制 0x开头    0xff = 15*(1+16)=255   负数的二进制表示 -42 先看42 = 00101010 取反-》   11010101 加1  -》   11010110       二进制                               无符号                有符号 00000001     ...
二进制八进制十六进制
二进制八进制十六进制
二进制&八进制&十进制&十六进制
何为进制 进位制/位置计数法是一种记数方式,故亦称进位记数法/位值计数法,可以用有限的数字符号代表所有的数值。可使用数字符号的数目称为基数(en:radix)或底数,基数为n,即可称n进位制,简称n进制。现在最常用的是十进制,通常使用10个阿拉伯数字0-9进行记数。 对于任何一个数,我们可以用不同的进位制来表示。比如:十进数57(10),可以用二进制表示为111001(2),也可以用五进
python二进制,八进制,十六进制
2 进制是以 0b 开头的: 例如: 0b11 则表示十进制的 38 进制是以 0o 开头的: 例如: 0o11 则表示十进制的 916 进制是以 0x 开头的: 例如: 0x11 则表示十进制的 17使用 bin,oct,hex 可输出数字的二进制,八进制,十六进制形式,例如:>>> a=0b111100 >>> a=60 >>> bin(a...
二进制 八进制 和十六进制
二进制的基本规则就是“逢二进一”,其中只用0和1表示。 0 = 0 1 = 1 2 = 10(2 + 0) 3 = 11(2 + 1) 4 = 100(4 + 0 + 0) ··· 8 = 1000(8 + 0 + 0 + 0) ··· 16 = 10000(16 + 0 + 0 + 0 + 0) ··· 32 = 100000(32 + 0 + 0 + 0 + 0 + 0)
如果把十六进制的字符串转换成十进制数字
hexstr varchar2(256);rndecnum number;rnrnhexstr := 'ff'rnrn--如果得到下面的数字255???rnrndecnum = 255;
十六进制转换成八进制
#include #include using namespace std; int main() { int n; cin>>n; string s1,s2; string *s3= new string[n]; int i,j,k; for(i=0;i<n;i++) { s1=""; s2=""; s3[i]=""; cin>>s1; for(j=0;j<s
将十进制转化为二进制、八进制、十六进制
将十进制转化为二进制和八进制很简单,只需要将数对2&8取余,然后再逆序输出即可,难度不大,程序逻辑也简单。 将十进制转化为十六进制大致上也是这样的,不过有点复杂的地方就是数的范围,将10朝2&8转化的时候,直接取余,那么数的范围就是0~1 & 0~8,但是,十六进制的范围是0~f,所以说,还是得在定义个字符数组,所需的数就从这里取。 下面就来看这个程序吧!void change_binary(i
C 十六进制转换成十进制数字的问题
如题,比如字符串:ABcd123456789ACD123456879,如何转换为十进制数字,已经超过各种数据类型的范围,这种大数据怎么处理?大牛们快来贴来代码,一起探讨一下吧~
将十进制转换为二进制、八进制、十六进制
将十进制转换为其它进制时比较复杂,整数部分和小数部分的算法不一样,下面我们分别讲解。 整数部分 十进制整数转换为 N 进制整数采用“除 N 取余,逆序排列”法。具体做法是: 将 N 作为除数,用十进制整数除以 N,可以得到一个商和余数; 保留余数,用商继续除以 N,又得到一个新的商和余数; 仍然保留余数,用商继续除以 N,还会得到一个新的商和余数; …… 如此反复进行,每次都保留余数,用商接着除...
代码写出来了,但是不理解
import java.awt.GridLayout;rnimport java.awt.event.*;rnimport javax.swing.*;rnrnpublic class Info extends JFramern private JLabel titleLabel = new JLabel("Title: ",SwingConstants.RIGHT);rn private JTextField title;rn private JLabel addressLabel = new JLabel("Address: ",SwingConstants.RIGHT);rn private JTextField address;rn private JLabel typeLabel = new JLabel("Type: ",SwingConstants.RIGHT);rn private JTextField type;rn rn public Info()rn super("Site Information");rn setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);rn String response1 = JOptionPane.showInputDialog(null,"Enter the site title: ");rn title = new JTextField(response1,20);rn rn String response2 = JOptionPane.showInputDialog(null,"Enter the site address: ");rn address = new JTextField(response2,20);rn rn String[] choices = "Personal","Commercial","Unknown";rn int response3 = JOptionPane.showOptionDialog(null,rn "What type of site is it?",rn "Site Type",rn 0,rn JOptionPane.QUESTION_MESSAGE,rn null,rn choices,rn choices[0]);rn type = new JTextField(choices[response3],20);rn JPanel pane = new JPanel();rn pane.setLayout(new GridLayout(3,2));rn pane.add(titleLabel);rn pane.add(title);rn pane.add(addressLabel);rn pane.add(address);rn pane.add(typeLabel);rn pane.add(type);rn setContentPane(pane);rn rn rn public static void main(String[] args)rn tryrn UIManager.setLookAndFeel(rn UIManager.getSystemLookAndFeelClassName());rn catch(Exception e)rn System.err.println("Couldnot use the system" + "Look and feel" + e);rn rn JFrame frame1 = new Info();rn frame1.pack();rn frame1.setVisible(true);rn rnrn rn rnrn1, 在jdk1.3下编译通过.rn2,实现功能是给出四个对话框,把前三对话框中输入的内容显示在第四个上.rn3,有几句不理解:rn\\type = new JTextField(choices[response3],20);rnrn/*public static void main(String[] args)rn tryrn UIManager.setLookAndFeel(rn UIManager.getSystemLookAndFeelClassName());rn catch(Exception e)rn System.err.println("Couldnot use the system" + "Look and feel" + e);rn rn JFrame frame1 = new Info();rn frame1.pack();*/rn rnrn还有三个对话框是怎么连起来的???rn
汇编八进制输入二进制输出小程序
汇编程序,实现八进制输入二进制输出,windows dos可以实现
简单的利用栈 将二进制转换成八进制
利用栈 将二进制数转换为八进制 #include #include #include struct mystack{    int *top;    int *base;};//栈的结构int main(){    mystack stack,result;    stack.top = (int *)malloc(2000*sizeof(int));    stack.base = st
聊聊十进制、二进制、八进制、十六进制
我们日常生活中接触最多的用的最顺畅的就是十进制,毕竟读书时数理化的计算大都是以十进制为基础来演算的。二进制则是在接触计算机之后才慢慢习惯并适应的,正如你看到这篇博客,就是以诸如“0101”二进制形式存储在硬盘里的。可二进制太长了,如,在C中int占4个字节,那么十进制的1的二进制为00000000 00000000 00000000 00000001,如果代码中都是操作这样的二进制数,我想没多少人喜欢
二进制 十进制 八进制 十六进制 进制转换
二进制 十进制 八进制 十六进制 之间的相互转换的具体实现
二进制,八进制,十进制,十六进制互换
二进制,八进制,十进制,十六进制互换 二进制,八进制,十进制,十六进制互换 二进制,八进制,十进制,十六进制互换
二进制,八进制,十六进制转换方法问题
进制的概念 十进制:0 1 2 3 4 5 6 7 8 9 二进制:0 1 八进制:0 1 2 3 4 5 6 7 十六进制:0 1 2 3 4 5 6 7 8 9 A B C D E F (十进制的0–&amp;gt;9对应十六进制的0–&amp;gt;9,十进制的10对应十六进制的A…以此类推到F对应15) 二进制逢二进一,八进制逢八进一 ,十六进制满十六进一 十进制的16用十六进制表示为10,17–...
二进制转十六进制,八进制(模板)
#include &amp;lt;algorithm&amp;gt; #include &amp;lt;iostream&amp;gt; #include &amp;lt;cstring&amp;gt; #include &amp;lt;cstdio&amp;gt; #include &amp;lt;math.h&amp;gt; #include &amp;lt;string.h&amp;gt; using namespace std; typedef unsigned long long...
Python 二进制、八进制、十六进制转换函数
二进制:bin() 八进制:oct() 十六进制:hex()
十进制与二进制八进制十六进制的转换
在BCB编译环境下编写的一个十进制与二进制八进制十六进制的转换小程序,带有源代码。
二进制,八进制,十进制,十六进制进制转换
二进制,八进制,十进制,十六进制进制转换
python学习笔记:十六进制、八进制、二进制
十六进制:0xAB   结果:171 十六进制:0xAD   结果:173 八进制:0O13  结果:11 八进制:0O11  结果:9 二进制:0b010  结果:2 二进制:0b0011010011 结果:211    ...
十六进制转二进制转八进制
存4位-取3位方法十六进制转二进制转八进制的思路最快的 最便于计算的 是 先转化成2进制,再转换成8进制: 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111
二进制,八进制,十进制,十六进制相互转换
用C++编写的二进制,八进制,十进制,十六进制相互转换的程序。
进制转换(十进制->二进制、八进制、十六进制)
问题描述:通用进制转换方法抽取代码如下:public class Tansform { public static void main(String[] args) { trans(100, 4, 15); //转16进制 trans(16, 3, 7); //转8进制 trans(16, 1, 1); //转2进制 } /** * 十进制转换 * @param n...
相关热词 c# stream 复制 android c# c#监测窗口句柄 c# md5 引用 c# 判断tabtip 自己写个浏览器程序c# c# 字符串变成整数数组 c#语言编程写出一个方法 c# 转盘抽奖 c#选中treeview