我的代码:
.386
.model small,c
.stack 1000h
.data
msg db 34h
.code
includelib MSVCRT
extrn printf:near
extrn exit:near
public main
main proc
push offset msg
call printf
mov al, 0fh ; hex=0fh=dec15
mov bl, 0eh ; hex=0eh=dec14
add bl, al
push offset bl
call printf
push 0
call exit
main endp
end main
4
打印prinf
。add
添加它们并将结果存储在bl
bl
)每当我尝试使用printf时都会出错:
错误A2032:无效使用寄存器
我尝试了什么:
mov bl,eax
然后打印mov eax,bl
然后打印bl
然后我终于尝试了这个:
mov al,3 ;print ♥
mov dl,al
mov ah,76
int 21h ;call interrupt
一切都失败了。
任何帮助都将不胜感激。
编辑:我在x86
EDIT2:经过一番研究,我终于能够完成这项工作了:
这是我的新代码:
.386
.model flat,stdcall
option casemap:none
.data
msg dd 34h
fmt db "Value is : %d", 0
.data?
retvalue dd ?
.code
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
includelib MSVCRT
extrn printf:near
extrn exit:near
public main
main proc
;push offset msg
;call printf
mov eax, 1Eh ; Decimal=30
mov ecx, 1Eh ; Decimal=30
add eax, ecx
mov retvalue,eax
push offset retvalue
push offset fmt
call printf
push 0
call exit
main endp
end main
问题是最终的printf
会打印出垃圾编号:
这是输出:Value is : 4206612
预期输出:Value is : 60