汇编语言题,十进制转十六进制

汇编语言题,十进制转十六进制
如何把一个十进制数(例如 100或-100)按十六进制形式输出到屏幕上?
谢谢一楼,但是我要的是汇编程序阿
; 下面的程序是16位汇编,编译通过,运行正确。

Code Segment
Assume CS:Code,DS:Code
; ----------------------------------------
; 定义常量
CR equ 000DH ;回车
LF equ 000AH ;换行
; -----缺友卖------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)

; 用法: Output Str_Addr
; 用法举例:Output PromptStr

Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -------------------------------------伏逗----
; 功能:输出一个字符
; 入口:dl=要显示的字符
enter_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
enter_Chr endp
; -----------------------------------------
; 功能:将AL中的低4位二进制数转换成ASCII码
; 入口:AL
; 出口:AL=转换后的ASCII码
AL_ASCII Proc Near
cmp al,9 ;AL>9?
ja Letter ;AL>9,按大写字母处理
or al,30h ;AL<=9,按数字处理
ret
Letter: sub al,9 ;字母,AL减9
or al,40h ;转换成相应的大写字母
ret
AL_ASCII EndP
; ----------------------告族-------------------
; 功能:将AL中的字节数转换成ASCII码
; 入口:AL
; 出口:AX=转换后的ASCII码
Byte_ASCII Proc Near
mov cx,4
xor ah,ah ;将AH置0
shl ax,cl ;将AX左移4位
shr al,cl ;将AL右移4位
xchg ah,al
call AL_ASCII ;调用子程序,将AL中的值转换成相应的ASCII码
xchg ah,al
call AL_ASCII
xchg ah,al
ret
Byte_ASCII EndP
; -----------------------------------------

Decimal_Num db 'The decimal: 109',CR,LF,CR,LF,'The heximal: $'
Number db 109

Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段。
; 多说两句。到这里提问的,多是在读专、本学生,问题也多是小问题。一个段64KB,够玩儿的了,没必要整这个段、那个段的,我就玩儿这一个段,代码段、数据段、附加段、堆栈段,通通的一个段,这一个段能玩儿明白就不错了。

Output Decimal_Num
mov al,Number
call Byte_ASCII
mov dl,al
call enter_Chr
mov dl,ah
call enter_Chr
mov dl,'H'
call enter_Chr

Exit_Proc: mov ah,4ch ;结束程序
int 21h

Code ENDS
END Start ;编译到此结束
以下change(t)尺李函数用冲困槐来判断余几散友,10-15对应A-F

#include

void sixteen(long x){
long t;
if(x!=0){
t=x%16;
x=x/16;
sixteen(x);
printf("%ld",change(t));
}
}
← 上一篇: 下一篇: →