帮我改一段程序
.386 .model flat,stdcall
option casemap:none
include \masmplus\include\windows.inc
include \masmplus\include\kernel32.inc
includelib \masmplus\lib\kernel32.lib
include \masmplus\include\user32.inc
includelib \masmplus\lib\user32.lib
.data
MsgBoxCaption db "结果!",0
MsgBoxText db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.code
start:
mov al,97h
call ShowAL
invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_YESNOCANCEL
invoke ExitProcess, NULL
ShowAL proc
mov dl,al ;保存AL
mov cl,04
shr al,cl ;AL高4位移至低4位
mov cx,02h ;循环2次
xor ebx,ebx
mov esi,offset MsgBoxText
Low4bit:
cmp al,09
jbe larger ;低4位超过9
add al,07
larger:
add al,30h
mov [esi],al
inc esi
mov al,dl ;恢复保存
and al,0Fh
loop Low4bit
ret
ShowAL endp
end start
显示AL中的数值,但是程序在运行期会出现错误