2017-05-16 53 views
0

嗨我真的很陌生。如何打印我想要的int MASM?

我想打印我的角色和变量我的DOS屏幕

价值观和字符串,我搜索了很多东西

,其中大部分叫我用‘诠释’指令

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

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

,但我不明白什么是MOV啊,2H'是和

“INT 21H”它总是trigers一个内存错误

我需要知道

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

如何打印我想要的值。

请帮助

+0

从这里开始:http://www.phatcode.net/res/223/files/html/toc.html – Tommylee2k

+0

“退出”是什么意思?什么是内存错误?是在执行代码之后返回的,还是由汇编器(编译器)返回的?无论如何,'mov ah,2h'是中断服务的子命令。把它看作一个巨大的开关盒。所有其他参数都放在零个或多个寄存器中。 (这里是其他服务的备忘单:http://spike.scu.edu.au/~barry/interrupts.html) –

+0

我的意思是抛出内存错误的异常,对不起 – unlimitedcoding

回答

0

你的程序将无法正常工作,因为该代码生成一个DOS可执行文件和现代化的Windows版本不支持他们了(here for reference)。

对你的代码做,让我们analize代码:

.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,看向读字符STDIN

编辑:下面一个简单的回声功能:

; retrive a char from input 
mov ah, 1h 
int 21h 
;print that char back 
mov dl, al 
mov ah, 2h 
int 21h 
+0

我看到这不起作用了,而且你链接的网站是有用的,但我不知道如何使用这些信息:( 可以给我一个简单的例子,我知道如何使用它们吗? – unlimitedcoding

+0

你必须移动到啊功能代码(01),然后你将保存的字符保存在al中,参见[这里](http://spike.scu.edu.au/~barry/interrupts.html#ah01) –

+0

我用一个简单的例子编辑,检查'现代窗户'em –