进制转换问题(汇编 100分)

elec001 2004-06-14 06:56:26
本人初学汇编 要用汇编编一个2进制转换成16进制的程序
一点思路都没有 请各位给点思路 给高分
谢谢
...全文
102 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Venda 2004-06-15
  • 打赏
  • 举报
回复
原理上讲二进制转成十六进制,只需把二进制每四位合并,再根据其四位值用十六进制数表示就行了。

azure711 2004-06-15
  • 打赏
  • 举报
回复
code segment
assume cs:code
main:mov bx,0100011110001111b ;notice main
mov ch,4
rotate: mov cl,4
rol bx,cl
mov al,bl
and al,0fh
add al,30h
cmp al,3ah
jl printit
add al,7h
printit:mov dl,al
mov ah,2
int 21h
dec ch
cmp ch, 0 ;notice this
jnz rotate
code ends
end main
try again...
yoxo 2004-06-15
  • 打赏
  • 举报
回复
缺少返回DOS
在CODE ENDS前加
MOV AH,4CH
INT 21H
elec001 2004-06-15
  • 打赏
  • 举报
回复
一晚了 怎么没人来看看?? 等待中······
elec001 2004-06-14
  • 打赏
  • 举报
回复
谢谢这位老兄 刚才找了一段程序 也看懂了 用debug调试也是正确的
但一运行就出错 大家帮我看看
code segment
assume cs:code
mov bx,0100011110001111b ;需要转换的数
mov ch,4
rotate: mov cl,4
rol bx,cl
mov al,bl
and al,0fh
add al,30h
cmp al,3ah
jl printit
add al,7h
printit:mov dl,al
mov ah,2
int 21h
dec ch
jnz rotate
code ends
end
运行后就抱错

NTVDM CPU 遇到无效指令
CS:0557 IP:0083 OP:0f 26 f6 06 96 选择“关闭”终止应用程序
我用的是xp系统
调试的时候程序也没有到CS:0557 IP:0083 程序也是正确的
这是怎么回事
watermelon01 2004-06-14
  • 打赏
  • 举报
回复
给楼主一段程序参考!
;二、八、十、十六进制任意进制数字之间的转换(限制16位二进制,即最大十进制的65535)。
;输入数字放在VAL中,二进制后加B,十进制省略,16进制后加H。
;转换成的进制类型放在B中,2为二进制,8为八进制,10为十进制, 16为十六进制
DATA SEGMENT
VAL DW 1100100B
B DW 10
BUF DB 16 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
LEA SI, BUF
MOV CX, 16
MOV AX, VAL
L1: MOV DX, 0
DIV B
MOV [SI], DL
INC SI
DEC CX
JNZ L1

MOV SI, OFFSET BUF
MOV BX, SIZE BUF
ADD SI, BX
DEC SI
MOV CX, 16
L2: MOV DL, [SI]
CMP DL, 10
JC L3
ADD DL, 7H
L3: ADD DL, 30H
MOV AH, 02H
INT 21H
DEC SI
DEC CX
JNZ L2

MOV AH, 4CH
INT 21H
CODE ENDS
END START
elec001 2004-06-14
  • 打赏
  • 举报
回复
怎么没人来?

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧