我如何在MASM中打印所需的内容? mov ah,int 21h之前的2是做什么的?

问题描述 投票:0回答:2

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

并且我搜索了很多东西,其中大多数告诉我使用'int'指令

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

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

但是我不知道'mov ah,2h'是什么和

'int 21h'总是触发内存错误

我需要知道

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

  • 如何打印我想要的值。

windows assembly dos masm
2个回答
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
投票

回答关于“ mov ah,2”是什么的问题的最简单方法,就像在C ++中使用“ cout”语句一样,mov ah,2,其中2代表一个函数调用,该函数调用在屏幕上打印一个字符并移入ah,然后“ int 21h”使您的函数(2)被执行,无论如何在数据寄存器中将被打印。

MOV DL,'A'MOV AH,2INT 21H

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

© www.soinside.com 2019 - 2024. All rights reserved.