?? sy95.asm.txt
字號:
data segment
str db 2 dup (?) ;定義一個str數組存放每次要輸出的16進制數的ASCII碼值
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data ;裝入數據段段地址
mov ds,ax
mov ax,0000h ;裝如附加段的段地址
mov es,ax
mov si,0000h ;置si為每次取出內存0000:0000地址單元數據的指針
mov bx,0000h ;置bx為計數寄存器,共要取出100個數
zp:
inc bx ;計數器加1,對一個存儲單元的數操作開始
mov al,es:[si] ;取出一個字節的內容給al
mov cl,4 ;置cl 為4,為移位 做準備
mov dl,al ;先把al中的數放入dl保存
and dl,0fh ;取出低四位
mov str[1],dl ;將取出的低四位放入str中保存
shr al,cl ;al右移四位
and al,0fh ;取出這次操作的存儲單元的高四位
mov str[0],al ;將高四位放入str,還是本著高高低低的原則
;下面是對取出來字節的對應十進制數值轉化成對應16進制數ASCII碼的處理并輸出
mov di,offset str
mov cx,2
l1:
mov dl,byte ptr [di]
cmp dl,0ah
jb next
add dl,7h
next:
add dl,30h
mov byte ptr [di],dl
mov dl,byte ptr [di] ;求得對應的16進制ASCII碼后將其送入dl,直接輸出
mov ah,2
int 21h
inc di ;修改di的值,將str的偏移地址加1
loop l1 ;若cx不為0則繼續處理
;輸出空格
mov ah,2
mov dl,20h ;將空格的ASCII碼值送入dl,準備輸出
int 21h
mov ax,bx ;先把bx計數值送入ax保存
and ax,000fh ;判斷bx中的個數是否能被16整除
jnz l2 ;不能被16整除時則跳轉到l2
;下面時輸出回車換行,也就是當滿足被16整除時輸出回車換行
mov ah,02
mov dl,13 ;將回車的ASCII 碼值送入dl,為輸出作準備
int 21h
mov ah,02
mov dl,10 ;將換行的ASCII 碼值送入dl,為輸出作準備
int 21h
l2:
inc si ;指針si 加1,為處理下個字節數據作準備
cmp bx,100 ;判斷操作數據個數是否到了100個
jnz zp ;小于100則繼續處理
;處理完100個后返回dos
mov ah,4ch
int 21h
code ends
end start
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -