问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

汇编十进制数制转换二进制和十六进制

发布网友 发布时间:2022-05-02 13:36

我来回答

2个回答

热心网友 时间:2022-06-20 07:17

assume cs:code, ds:data

data segment
num dw 0
ten dw 10
tmp dw 0

buffer db 256 p(?)
data ends

code segment
start:mov ax, data
mov ds, ax
call input; 输入
call crlf; 输出一个换行
lea bx, buffer; bx为存储地址
mov ax, num
call d2b; 10进制到2进制转换
mov ah, 9; 输出
mov dx, bx
int 21h
call crlf; 输出一个换行
mov ax, num
call d2h; 10进制到16进制转换
mov ah, 9
mov dx, bx
int 21h
mov ax, 4c00h
int 21h

input:finit; 输入过程,结果保存在num里
fldz
_1L1:mov ah, 1
int 21h
cmp al, 13
jz done1
xor ah, ah
sub al, '0'
mov tmp, ax
fimul ten
fiadd tmp
jmp _1L1
done1:fistp num
ret

d2b:xor si, si; 10进制到2进制转换
xor di, di
mov dx, 8000h
jmp _2L2
_upd1:inc si
_2L1:shr dx, 1
jz done2
_2L2:test dx, ax
jnz _2ones
cmp di, 0
jz _2L1
mov byte ptr [bx+si], '0'
jmp _upd1
_2ones:mov byte ptr [bx+si], '1'
mov di, 1
jmp _upd1
done2:cmp si, 0
jg _2L4
mov byte ptr [bx+si], '0'
inc si
_2L4:mov byte ptr [bx+si], 'B'
mov byte ptr [bx+si+1], '$'
ret

d2h:mov cl, 4; 10进制到16进制转换
xor si, si
xor di, di
jmp _3L3
_3L1:inc si
_3L2:shl ax, cl
jz done3
_3L3:mov dx, ax
and dx, 0f000h
rol dx, cl
cmp di, 0
jnz _3L4
cmp dx, 0
jz _3L2
mov di, 1
_3L4:
cmp dx, 10
jge _3acs
add dl, '0'
mov [bx+si], dl
jmp _3L1
_3acs:sub dx, 10
add dx, 'A'
mov [bx+si], dl
jmp _3L1
done3:cmp si, 0
jg _3L5
mov byte ptr [bx+si], '0'
inc si
_3L5:
mov byte ptr [bx+si], 'H'
mov byte ptr [bx+si+1], '$'
ret

crlf:mov ah, 2; 输出一个回车
mov dl, 13
int 21h
mov dl, 10
int 21h
ret
code ends
end start

热心网友 时间:2022-06-20 07:18

汇编语言源程序实例
假设要将BX寄存器中的数分别按无符号二进制、十进制和十六进制显示在屏幕上,下面给出实现的汇编源程序,均为子程序方式,为了简明,略去现场的保护与恢复操作。
3.1 按二进制形式
DISPBXB PROC NEAR
MOV CX,16
LP:ROL BX,1
JC D1
MOV DL,30H
JMP OUTP
D1:MOV DL,31H
OUTP:MOV AH,2
INT 21H
LOOP LP
MOV DL,’B’ ;显示字母“B”
MOV AH,2
INT 21H
RET
DISPBXB ENDP
设(BX)=7FFFH,则输出格式为0111111111111111B,后面的大字字母B表示二进制形式,显示结果固定为十六位。
3.2 按十进制形式
DISPBXD PROC NEAR
MOV SI,10
XOR CX,CX
MOV AX,BX
NEXT:MOV DX,10
DIV SI
PUSH DX
INC CX
CMP AX,0 ;商为0则完成转换
JNZ NEXT
OUTP:POP DX
ADD DL,30H
MOV AH,2
INT 21H
LOOP OUTP
RET
DISPBXD ENDP
此程序在转换和显示时的循环控制方式和二进制形式的例子不一样,即显示结果的位数是不固定的。若(BX)=7FFFH=32767,则显示结果为5位:32767;若(BX)=00FFH=255,则显示结果为3位:255,与十进制的有效位数相同。
3.3 按十六进制形式
DISPBXH PROC NEAR
MOV CL,
MOV CH,4
NEXT:ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,3AH
JL OUTP
ADD AL,07H ;是A~F,要多加7
OUTP:MOV DL,AL
MOV AH,02H
INT 21H
DEC CH
CMP CH,0
JA NEXT
MOV DL,’H’ ;显示字母“H”
MOV AH,2
INT 21H
RET
DISPBXH ENDP
此程序的显示格式固定为四位,最后加上字母“H”表示为十六进制形式。设(BX)=7FFFH,则显示结果为:7FFFH;若(BX)=00FFH,则显示结果为:00FFH。
4 对有符号数显示的扩展应用
CMP BX,0
JGE ZS
MOV DL,’-’
MOV AH,2
INT 21H
ZS:CALL DISPBXD
希望对你有所帮助。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
哥们,我是黑龙江齐齐哈尔现在高一的,想报考中国刑警学院,什么分数线啊... 没有驾驶证车辆查到有违章怎么办 广州岭南印象园景区介绍 ...从新选像我这样的人不知道读什么又懒又不想背书。 哎呀哎呀好烦阿要期末考试了,我不想背书 高考我是文科的光不想背书怎么办呢 我不想背书啊啊啊啊,考第一真难,现在的初中生涯好难熬,哪位大神教我... 现在初二了 不想背书 感觉好无聊 只想玩 但是成绩还是不错的 我该... ...时候学习还中等。现在基本一窍不通。也不想背书,身边也没人背,上课... [精选]菊花茶的副作用 植物大战僵尸作弊码是多少 片头林正英给一胖子的儿子取名字的电影是什么 植物大战僵尸作弊码有吗? 施工现场临时用电移动*配电箱,它的电源线的长度应该不超过多少米? 植物大战僵尸作弊密码 海尔洗衣机xqg60-b10288出现e1不排水怎么处理的 植物大战僵尸 作弊码是什么啊 高低压配电柜合理布局的注意事项有哪些? 临时用电配电箱有哪些规范 海尔洗衣机xqs60一828f不排水是什么原因 怎样在GENBANK 查找 朗德鹅 ACSL1基因序列 电厂仿真软件ACSL1怎么应用 红糖银耳汤怎么做 红糖银耳汤怎么做好吃 红糖银耳羹 怎样才能炖的软糯浓稠的做法 红糖苹果银耳汤怎么做好吃? 银耳汤可以放红糖煮吗?是先放糖还是后放,怎么煮熟的快? 银耳红枣汤可以放红糖吗,红糖银耳红枣汤的做法 Dede织梦建的网站首页推荐文章与热点文章不显示? dede织梦 网站我在文章编辑和模板修改不加粗 高中数学外接球问题 植物大战僵尸2作弊码 梅特勒 托利多ACS-JJ设置快捷键 植物大战僵尸有没有作弊码? 植物大战僵尸密码 植物大战僵尸 秘籍 要有用的 植物大战僵尸年度版的作弊码(速求)谢谢了,大神帮忙啊 汇编中怎么将十进制数转换为十六进制 植物大战僵尸的全部作弊码可以吗 沙田柚的核有什么药用价值? 植物大战僵尸怎么输作弊码 植物大战僵尸作弊码怎么输 悲烈排帮高清电影 有什么好的电影可以看啊? 汇编怎么把10进制数转化成十六进制数 速求+烤鸭方法(烤箱) 做烧鸭用什么样的烤箱烤鸭 《穿越之极品皇帝》txt全集下载 书旗小说ID地址 《极品皇帝》txt全集下载