微机原理问题谢谢回答

请问,INT 21H 为何就可以显示一行hello,什么原理呢?还有既然JMP START跳过MESG,为何后面还可以使用MOV DX,OFFSET MESG?谢谢各位了

第1个回答  2014-03-26
1、INT 21H 为何就可以显示一行hello,什么原理呢?
回答:看这个语句,MESG DB 'HELLO',0DH,0AH,'$'.这一句就像C语言里的定义一个字符串,这个字符串的前5个字节是H、E、L、L、O,然后是0DH、OAH最后是$.其中,$是字符串结束标志,就像C语言里的\0。而INT 21 这个语句调用DOS中断程序,此时AH中存放的是9,也就是调用显示DS:DX指向的字符串,也就是MESG中的字符串。而LOOP语句会让该字符串被显示10次。
2、还有既然JMP START跳过MESG,为何后面还可以使用MOV DX,OFFSET MESG?
回答:就像C语言的main之前的内容,比如:定义某个函数,编译器只会编译而不会运行,而main之后才开始运行。同理,汇编程序只会汇编START之前的内容而不会运行他们。
也就是说:BEG JMP START语句相当于定义了一个函数,该函数的功能是转到START处,但此处之时定义了该函数,并没有调用它,它的功能不会实现,故而定义完BEG后,编译程序接着定义字符串MSEG.
相似回答