專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

匯編:將四位十進制數(shù)轉(zhuǎn)化為十六進制數(shù)

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2013年12月01日   【字體:

這是一個把四位十進制數(shù)轉(zhuǎn)化為十六進制數(shù)的匯編語言程序


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   ;個位放在cl中
    ;bh,bl,ch,cl 都沒問題
  
  
    lea dx,kongzi  ;換行回車
    mov ah,09h
    int 21h
  
    lea dx,tital2  ;輸出抬頭2
    mov ah,09h
    int 21h 
  
    mov ax,0    ;初始化ax 
 
 
    sub bh,30h  ;把ascII碼轉(zhuǎn)化為十進制數(shù)
    mov al,bh   ;輸入的第一個數(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)化為十進制數(shù)
      
    mov ax,jichun ; ax中為9999轉(zhuǎn)化為16進制數(shù)270f
    ;over;;;;;;;;;;;;;;;;;;;;;;;; 
 
    mov dx,0;初始化
    mov di,0;指針為0 
    mov bx,0010h
quyu:  
    div bx     ;默認 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

 

關(guān)閉窗口

相關(guān)文章