這是一個(gè)把四位十進(jìn)制數(shù)轉(zhuǎn)化為十六進(jìn)制數(shù)的匯編語(yǔ)言程序
data segment
tital1 db 'Please input shi jin zi shu (example 1234): ','$'
tital2 db 'It is transpranted into shi liu jin zi shu :','$'
tital3 db 'Do you want to have a try again (yes "y",no "n"): ','$'
tital4 db 'Welcome to use this program It is made by WQ 2012/5/17','$'
kongzi db 0dh,0ah,'$'
jichun dw 0000h
yushu db 5 dup(00)
duandian db 'jianche dian',0dh,0ah,'$'
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
retry:
lea dx,kongzi ;換行回車
mov ah,09h
int 21h
lea dx,tital1 ;輸出抬頭1please input 1234
mov ah,09h
int 21h
mov al,0 ;初始化al
mov ah,01h ;輸入并回顯
int 21h
mov bh,al ;千位放在bh中保存
mov ah,01h
int 21h
mov bl,al ;百位放在bl中
mov ah,01h
int 21h
mov ch,al ;十位放在ch中
mov ah,01h
int 21h
mov cl,al ;個(gè)位放在cl中
;bh,bl,ch,cl 都沒(méi)問(wèn)題
lea dx,kongzi ;換行回車
mov ah,09h
int 21h
lea dx,tital2 ;輸出抬頭2
mov ah,09h
int 21h
mov ax,0 ;初始化ax
sub bh,30h ;把a(bǔ)scII碼轉(zhuǎn)化為十進(jìn)制數(shù)
mov al,bh ;輸入的第一個(gè)數(shù)(千位數(shù))
;over
mov si,0ah ;10權(quán)值
mul si ;ax被乘1000 over
mul si
mul si
mov jichun,ax ;over
mov ax,0
sub bl,30h
mov al,bl ;ax被乘100
mul si
mul si
add jichun,ax
mov ax,0
sub ch,30h
mov al,ch
mul si ;ax乘10
add jichun,ax
mov ax,0
sub cl,30h
mov al,cl
add jichun,ax ;徹底轉(zhuǎn)化為十進(jìn)制數(shù)
mov ax,jichun ; ax中為9999轉(zhuǎn)化為16進(jìn)制數(shù)270f
;over;;;;;;;;;;;;;;;;;;;;;;;;
mov dx,0;初始化
mov di,0;指針為0
mov bx,0010h
quyu:
div bx ;默認(rèn) ax
mov yushu[di],dl
inc di
mov dx,0
cmp ax,10h
jae quyu
mov yushu[di],al
inc di
mov cx,di
dec di
shuchu:
mov dl,yushu[di]
dec di
cmp dl,0ah
jnae l2
add dl,37h
mov ah,02h
int 21h
jmp jiedian
l2: add dl,30h
mov ah,02h
int 21h
jiedian:
loop shuchu
tishi:
lea dx,kongzi;控制換行回車
mov ah,09h
int 21h
lea dx,tital3;輸出抬頭3
mov ah,09h
int 21h
mov ah,01h ;判斷是否繼續(xù)
int 21h
cmp al,'y'
je retry
lea dx,kongzi;控制換行回車
mov ah,09h
int 21h
lea dx,tital4
mov ah,09h
int 21h
over: ;結(jié)束
mov ah,4ch
int 21h
code ends
end start