Assembly 汇编语言(Irvine)-等待击键并返回按下的键的宏

Assembly 汇编语言(Irvine)-等待击键并返回按下的键的宏,assembly,macros,ascii,masm,irvine16,Assembly,Macros,Ascii,Masm,Irvine16,等待击键并返回按下的键的宏。 宏应包括ASCII码和键盘扫描码的参数 我有以下代码,但我得到两个错误。下面是错误,下面是我的源代码 错误: 错误A2006:未定义的syV 错误MSB3721:命令“ml.exe/c/nologo/Zi” /Fo“Debug\ch10_01.obj”/Fl“zprob1.lst”/I“c:\Irvine”/W3 /错误报告:提示/Ta“…\ASM Solutions\ch10\ch10\u 01.ASM”已退出 代码是1 源代码: INCLUDE Irvine1

等待击键并返回按下的键的宏。 宏应包括ASCII码和键盘扫描码的参数

我有以下代码,但我得到两个错误。下面是错误,下面是我的源代码

错误:

错误A2006:未定义的syV

错误MSB3721:命令“ml.exe/c/nologo/Zi” /Fo“Debug\ch10_01.obj”/Fl“zprob1.lst”/I“c:\Irvine”/W3 /错误报告:提示/Ta“…\ASM Solutions\ch10\ch10\u 01.ASM”已退出 代码是1

源代码:

 INCLUDE Irvine16.inc
ASSUME DS:_DATA

mReadkey MACRO ascii, scan
    mov ah,10h      ; BIOS keyboard input function
    int 16h
    mov scan,ah
    mov ascii,al
ENDM

.data
ascii BYTE ?
scan  BYTE ?
str1  BYTE "ASCII code: ",0
str2  BYTE "Scan code:  ",0

.code
main PROC
mov ax,@data
mov ds,ax

; Wait for a key; when the macro returns, the two arguments
; contain the ASCII code and scan code of the key.
mReadkey ascii, scan

; Display the values.
    mov edx,OFFSET str1
    call WriteString
    movzx eax,ascii
    call WriteHex
    call Crlf

    mov edx,OFFSET str2
    call WriteString
    movzx eax,scan
    call WriteHex
    call Crlf

    exit
main ENDP
END main

您试图将16位实模式代码编译为32位保护模式可执行文件。那不行。将
/omf
添加到
ml.exe
的命令行,并确保
link16.exe
将用作链接器。

第20行有错误