岭南版我的一天教案:二进制转化为十六进制

来源:百度文库 编辑:中科新闻网 时间:2024/05/01 22:30:15
用汇编写的,谁有谢谢

你很兔啊!!
你去找一本《C语言程序设计》的书看看不就会了吗?

8086/8088汇编
假设要将16位寄存器si中二进制信息以16进制输出

data segment
hexchar db '0123456789abcdef'
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
lea bx,hexchar
mov cx,4
again: mov ax,000fh
and ax,dx
xlat
mov dl,al
mov ah,02h
int 21h
shr si,1
shr si,1
shr si,1
shr si,1
loop again
mov ah,4ch
int 21h
code ends
end start

data segment
hex db '0123456789ABCDEF'
buf db 4 dup(0)
buf1 dw 1234h
data ends
stack segment stack 'stack'
db 100 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stack,es:data
main proc far
push ds
xor ax,ax
push ax
mov ax, data
mov ds, ax
mov es, ax
mov si, buf1 ;须做二进制转十六进制的数送si.
mov di, offset buf
mov bx, offset hex
mov cx, 4
lp:
mov ax, si
and ax, 000fh
xlat
mov [di],al
shr si, 1
shr si, 1
shr si, 1
shr si, 1
inc di
loop lp
mov cx, 4
mov di, offset buf+3
lp1:
mov dl, [di]
mov ah, 02h
int 21h
dec di
loop lp1
ret
main endp
code ends
end main
该程序将BUF1中的字变量用十六进制输出到屏幕。
BUF中存入了十六进制数各位的ASCII码。
直接拷贝过去将buf1中放入须转换的数,编译连接执行即可!