我想在DOS屏幕上打印字符和变量的值和字符串
并且我搜索了很多东西,其中大多数告诉我使用'int'指令
.code
main PROC
mov dl, 'a'
mov ah, 2h
int 21h
exit
main ENDP
end main
我已经通过应对互联网编写了这样的代码。
但是我不知道'mov ah,2h'是什么和
'int 21h'总是触发内存错误
我需要知道
如何获取字符串,用户输入的整数,
如何打印我想要的值。
您的程序将无法运行,因为该代码生成了DOS可执行文件,并且现代Windows版本不再支持它们(here for reference。
关于您的代码的作用,让我们分析您的代码:
.code
main PROC
mov dl, 'a' ; Move character 'a' to the dl register
mov ah, 2h ; set the ah register to match with the 02 function code (write to STDOUT)
int 21h ; trigger the 21h interrupt
exit
main ENDP
end main
[如果您想以这种方式读取字符(不再像我以前写的那样,则不再支持)读取here,并查看READ CHARACTER TO STDIN
编辑:这是一个简单的回显函数:
; retrive a char from input
mov ah, 1h
int 21h
;print that char back
mov dl, al
mov ah, 2h
int 21h
回答关于“ mov ah,2”是什么的问题的最简单方法,就像在C ++中使用“ cout”语句一样,mov ah,2,其中2代表一个函数调用,该函数调用在屏幕上打印一个字符并移入ah,然后“ int 21h”使您的函数(2)被执行,无论如何在数据寄存器中将被打印。
MOV DL,'A'MOV AH,2INT 21H
上面编写的代码在屏幕上打印单个字符'A'。希望回答您的问题