21,458
社区成员
发帖
与我相关
我的任务
分享
; ----------------------------------------------------------------------------------------
; 函数功能:找大数
; 入口参数:bl = 数据 1,cl = 数据 2
; 出口参数:无
PrintHex:
push bp
mov bp, sp
push eax
xor eax, eax
movzx eax, bl
cmp bl, cl
ja .Print
movzx eax, cl
.Print:
call PrintHex
.Return:
pop eax
mov sp, bp
pop bp
ret
; ----------------------------------------------------------------------------------------
; 函数功能:以十六进制显示 32 位整数字符形式
; 入口参数:eax = 数据
; 出口参数:无
PrintHex:
push bp
mov bp, sp
push edx
push ecx
push eax
push dword 0
push dword ' '
; 求余,把对应的数字转换成 ASCII 码,再压入栈
mov ecx, 16
.Rem:
xor edx, edx
div ecx
cmp edx, 9
jg .Hex
add edx, '0' ; 余数 0 - 9 转成 ASCII 码
jmp .Push
.Hex:
add edx, 'A' - 10 ; 余数 10 - 15 转成 ASCII 码
.Push:
push edx
cmp eax, 0
jnz .Rem
push dword 'x' ; 16 进制数以 0x 前缀表示
push dword '0'
mov ah, 0x0E
.Print:
pop ecx
jcxz .Return
mov al, cl
int 0x10
jmp .Print
.Return:
pop eax
pop ecx
pop edx
mov sp, bp
pop bp
ret