社区
汇编语言
帖子详情
急:如何将32位16进制数转化为10进制?
xfile
2003-06-08 08:47:36
老师留的作业:
如何将32位16进制数转化为10进制并显示出来.
哪位DX能给一个启示,先谢谢了!
...全文
1282
9
打赏
收藏
急:如何将32位16进制数转化为10进制?
老师留的作业: 如何将32位16进制数转化为10进制并显示出来. 哪位DX能给一个启示,先谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xfile
2003-06-10
打赏
举报
回复
可能因为你们用的是8086, 而我用的还是8051,
请再帮我出出注意吧.用除法求余数这招肯定是行不通了.
xfile
2003-06-10
打赏
举报
回复
up
xfile
2003-06-10
打赏
举报
回复
请各位DX注意:我所用的mov 和 div指令只能
进行8位操作(一个字节). 以上所提都是就32位操作而言,
有谁能就此关键问题提出解决办法?
xfile
2003-06-09
打赏
举报
回复
spreadwide,
谢谢你的代码,但是我还是没有看明白它如何对这32位数操作的,
mov ax data 一次就能把这个数送进去吗?我所用的mov 和 div指令只能
进行8位操作,这就是我所困惑的地方,请指教.
freewing
2003-06-09
打赏
举报
回复
你是说4个字节吗?
用除法不正好吗?
DX:AX,高字在DX,低字在AX
(DX)(AX)/(10)
商(AX),余数(DX),把DX push进去
循环就是了
xiaott
2003-06-09
打赏
举报
回复
DIV 指令还可以用32位操作数做被除数,除数为16位,得到的结果商和余数也是16进制的!!!!!!我这里有一个代码:希望你能够看明白!
;********************************************************************
; 从1加至100,将结果存入BUFF单元并输出十进制结果显示
;********************************************************************
data segment
buff db 20 dup(?)
data ends
code segment
assume cs:code,ds:data
begin: mov ax,data
mov ds,ax
lea si,buff
mov ax,0
mov bx,1
mov cx,100
lop: add ax,bx ;从1加至100并结果存到AX中(可以存入十进制范围0-65535)
inc bx
loop lop
mov bx,10 ;置除数为十进制的10(十六位)
lop1: mov dx,0 ;将DX作为32位被除数的高位扩展
div bx ;[DXAX]/BX 后商在低位字AX中,余数在高位字DX中
push dx ;将结果(余数)保存至堆栈
inc cx ;计数器加一
cmp ax,0
jnz lop1 ;若商不为0则继续处理
next: pop dx ;取出数据
mov [di],dl ;将结果存入存储单元
inc di
call disp ;显示十进制结果
loop next
mov ah,4ch
int 21h
disp proc near ;显示ASCII字符子程序
add dl,30h
mov ah,02h
int 21h
ret
disp endp
code ends
end begin
spreadwide
2003-06-08
打赏
举报
回复
这是键盘输入32位十六进制数转换为十进制并输出的代码:
stack segment stack
dw 128 dup(?)
stack ends
;*********************************
data segment
str db 'continue?if y/Y continue,or exit$'
data ends
;*****************************************
code segment
assume cs:code,ss:stack,ds:data
start:mov ax,stack
mov ss,ax
mov ax,data
mov ds,ax
L: call hdc
call crlf
call bdc
call crlf
lea dx,str
mov ah,9h
int 21h
mov ah,1h
int 21h
cmp al,'y'
jz L
cmp al,'Y'
jz L
mov ah,4ch
int 21h
;***************************************
hdc proc ;键盘输入转换为二进制
push ax
push cx
mov bx,0d
nkey:mov ah,1h
int 21h
cmp al,30h
jl exit
cmp al,3ah
jl digit
cmp al,41h
jl exit
cmp al,47h
jl char
cmp al,61h
jl exit
cmp al,67h
jge exit
sub al,20h
char:sub al,7h
digit:sub al,30h
mov ah,0
mov cl,4
shl bx,cl
or bx,ax
jmp nkey
exit:pop cx
pop ax
ret
hdc endp
;***********************************
bdc proc ;二进制转换为十进制并输出
push cx
mov cx,10000d
call disp
mov cx,1000
call disp
mov cx,100
call disp
mov cx,10
call disp
mov cx,1
call disp
pop cx
ret
bdc endp
;***********************************
disp proc ;十进制转换为ASCII码显示输出
push ax
push dx
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al
add dl,30h
mov ah,2h
int 21h
pop dx
pop ax
ret
disp endp
;*******************************
crlf proc ;显示输出回车换行
push ax
push dx
mov dl,0dh
mov ah,2h
int 21h
mov dl,0ah
mov ah,2h
int 21h
pop dx
pop ax
ret
crlf endp
;*********************************
code ends
end start
xfile
2003-06-08
打赏
举报
回复
谢谢freewing,
我用的是8051 Simulator,除法的指令是MOV AB,A 是一个8位字节,
用你的方法,我必须把这个32位数分成四部分来操作, 我想不明白其中
的换算关系, 请再指教!
freewing
2003-06-08
打赏
举报
回复
一个一般的方法
1:求10的余数
2:把余数push,用CX计push的个数
3:再除以10然后
4:数不为0就重复1-3
5:POP
6:输出
7:重复5-6直到把所有余数都输出(CS=0)
JavaSE基础视频精讲①:环境配置和二进制转换
本课程适用于零基础小白快速入门Java语言技术,通过课程学习可以清晰了解Java开发的环境配置和二进制转换。课程配套完整的(笔记+代码+作业)课程主要分为:1.软件开发的常识2.Java语言的简介3.Java程序开发前的准备工作4.Java程序的运行机制5.第一个Java程序6.注释的使用7.Java编码规范8.API文档的简单使用9.关键字和标识符10.进制的相关概念11.进制之间的相互转换112.进制之间的相互转换213.原码反码以及补码
汇编语言:从键盘输入两位十六进制
数
,
转化
成十进制输出
从键盘输入两位十六进制
数
,
转化
成十进制输出 示例: 输入:10 输出:16 输入:ed 输出:237 输入:egd 输出:237 题目分解 首先我们需要从键盘输入两个
16进制
数
,思考两个十六进制
数
该如何写入;其次,我们要将十六进制
数
转化
成十进制;最后我们要考虑如何输出。解决了这三个小问题,本题就算完成了。 在这里插入代码片 ...
转:
16进制
转
10进制
算法各编程语言代码咋写?
在 C# 中,可以使用 Convert.ToInt32() 函
数
将 16 进制
数
转换为 10 进制
数
。该函
数
需要两个参
数
,第一个参
数
是要转换的 16 进制
数
,第二个参
数
是基
数
(即进制)。在 C++ 中,可以使用 std::stoi() 函
数
将 16 进制
数
转换为 10 进制
数
。在 VB.NET 中,可以使用 Convert.ToInt32() 函
数
将 16 进制
数
转换为 10 进制
数
。在 Java 中,可以使用 Integer.parseInt() 方法将 16 进制
数
转换为 10 进制
数
。
C语言实现
16进制
数
与
10进制
数
的
转化
C语言实现
16进制
数
与
10进制
数
的
转化
这里有两种情况: ①第一种情况:如果我得到的是一个
16进制
数
,我通过肉眼看到的就是
16进制
显示(这里看到的肯定打印结果),比如85,我知道这个
数
是
16进制
,但是代码里面却不是,在内存空间里却是按照int类型
10进制
进行存储的。需要将它在内存空间里面也
转化
为
16进制
的存储。 #include <stdio.h> #include <stdin...
进制转换:十六进制转十进制
十六进制转换成十进制的具体算法是: 1、首先明白
16进制
数
(从右到左
数
是第0位,第1位,第2位……)的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方,依次这样排列下去。 2、明白ABCDEF表示的二进制
数
字分别是10,11,12,13,14,15。 3、十六进制转换成十进制的公式是:要从右到左用二进制的每个
数
去乘以16的相应次方,然后这些
数
字相加就是了。 例1:2AF5换算成
10进制
: 第0位: 5 * 16^0 = 5 第1位: F * 16^1 =15*16^1= 2
汇编语言
21,458
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章