include Macros.inc
include Irvine32.inc
hello macro x:req,y:req
local L1,L2
;;向宏传输两个实参,第一个(x)为32位内存操作数,第二个为16位内存操作数
push eax
push ebx
call ReadInt
mov ebx,eax
shr eax,16
cmp eax,0;;确认是否为32位数或16位正数
je L1
cmp eax,0ffffh;;确认是否为16位负数
je L1
mov x,ebx
jmp L2
L1:
mov y,bx
L2:
pop ebx
pop eax
endm
.data
big sdword 0
sma sword 0
.code
main proc
hello big,sma
mShow big
mShow sma
mov eax,0
exit
main endp
end main
修复了-65536(0FFFF0000h)无法输出的bug
include Macros.inc
include Irvine32.inc
hello macro x:req,y:req
local L1,L2,L3,L4
;;向宏传输两个实参,第一个(x)为32位内存操作数,第二个为16位内存操作数
push eax
push ebx
call ReadInt
mov ebx,eax
shr eax,16
cmp eax,0;;确认是否为32位数或16位正数
je L3
cmp eax,0ffffh;;确认是否为16位负数
je L1
L4:
mov x,ebx
jmp L2
L1:
cmp bx,0
je L4
L3:
mov y,bx
L2:
pop ebx
pop eax
endm
.data
big sdword 0
sma sword 0
.code
main proc
hello big,sma
mShow big
mShow sma
mov eax,0
exit
main endp
end main
本文修复了一个宏,使其能正确处理32位和16位数,通过增强输入参数检查,确保传递的数值有效。主要内容包括调整宏结构和增加条件判断,以提升程序的健壮性。
327

被折叠的 条评论
为什么被折叠?



