直接定址表 輸入0-FF之間的數據,並輸出到屏幕上

assume cs:code,ds:data

data segment
    table db '0123456789ABCDEF' ;16進制的直接定址表
data ends

code segment
    
    start:
         mov ax,data ;將data段與ds關聯
         mov ds,ax
         mov si,0
         
         mov ax,2Bh ;輸入要輸出到屏幕的數值,類似數值轉字符n2c
         
         call showword

         mov ax,4c00h
         int 21h
         
  showword:
         push bx
         push es
         
         mov ah,al
         mov cl,4
         shr ah,cl ;右移四次
         and al,00001111b;保護al數據
         
         mov bl,ah
         mov bh,0
         mov ah,table[bx]
         mov bl,al
         mov al,table[bx]
         
         push ax ;爲保護ax中的數據,將其壓棧
         
         mov ax,0b800h
         mov es,ax
         
         pop ax ;出棧ax數據,使其正常傳送到顯存區
         
         mov es:[160*12+40*2],ah
         mov es:[160*12+40*2+2],al   
          
         pop es
         pop bx     
         
         ret     
         
code ends
end start

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章