前置知識:code
XLAT
指令:將BX指定的緩衝區中、AL指定的位移處的一個字節數據取出賦給AL,實際至關於(AL) = (DS:(BX+AL))
。注意,不是單純地賦予AL+BX,而是對應地址的值。內存
換碼指令執行前,通常在主存創建一個字節量表格(以下代碼4-6行),內含要轉換成的目的代碼表格首地址存放於BX,AL存放相對錶格首地址的位移量。asm
換碼指令執行後,將AL寄存器內容轉換爲目的代碼。table
系統功能調用:21號中斷,是DOS提供給用戶用於調用系統功能的中斷,有近百個功能供使用。class
字符輸出的功能調用:DOS功能調用 INT 21H
im
功能號:AH=02H
;入口參數:DL=字符的ASCII碼
;功能:在顯示器當前光標位置顯示給定的字符,光標右移一個字符位置。數據
assume cs:codesg, ds:datasg datasg segment ASCII db 30h,31h,32h,33h,34h,35h db 36h,37h,38h,39h ;0~9的ASCII碼 db 41h,42h,43h,44h,45h,46h ;A~F的ASCII碼 hex db 09h ;任意設定了一個待轉換的一位16進制數,這裏以'0f'爲例 datasg ends codesg segment start: mov ax, datasg mov ds, ax mov bx, offset ASCII ;bx存儲標號ASCII的偏移地址(將其做爲基準值) mov al, hex ;將待轉換的16進制數放到低位寄存器 and al, 0fh ;按位與,對8位的前4位清0(由於實驗只要求輸出後4位) xlat ;換碼:al<- DS:[BX+AL] 基準值BX(ASCII的offset)+位移量AL(待轉換) mov dl, al ;入口參數:dl<-al mov ah, 2 ;02號DOS功能調用 int 21h ;顯示一個ASCII碼字符 mov ah, 4ch int 21h codesg ends end start
內存中存儲的數據:db
運行結果:img
hex賦值 | 0fh |
09h |
---|---|---|
運行結果 | ![]() |
![]() |