如何打印我想要的MASM?

时间:2017-05-16 12:41:06

标签: assembly

嗨,我非常擅长语言。

我想打印我的角色和变量' DOS屏幕上的值和字符串

我搜索过很多东西

他们中的大多数人告诉我要使用' int'指令

    .code
    main PROC
        mov dl, 'a'
        mov ah, 2h
        int 21h 
        exit
    main ENDP
    end main

我通过互联网应对来编写了这样的代码。

但是我没有得到什么' mov啊,2h'是为了和

' int 21h'它总是会导致内存错误

我需要知道

如何获取用户输入的字符串,

如何打印我想要的值。

请帮助

2 个答案:

答案 0 :(得分:0)

您的程序将无法运行,因为该代码生成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

答案 1 :(得分:-2)

回答“ mov ah,2”是什么的最简单方法,
就像在C ++中使用“ cout”语句一样,mov ah,2,其中2代表一个
函数调用,用于在屏幕上打印一个字符并移入ah,然后“ int 21h”
导致您的函数(2)要执行,并且要打印数据寄存器中的所有内容。

MOV DL,“ A”
MOV AH,2个
INT 21H

上面编写的代码在屏幕上打印单个字符“ A”。 希望能回答您的问题