我需要对汇编代码

时间:2017-01-25 07:59:34

标签: assembly

有人可以向我解释这段汇编代码吗?这很简单,但我不知道发生了什么。

code_segment segment

assume cs:code_segment

mov ah, 01h
int 21h   
mov ah, 4ch
int 21h   
code_segment ends
end


code_segment segment
assume cs:code_segment
repeat: mov ah, 01h
int 21h  
jmp repeat
mov ah, 4ch
int 21h 
code_segment ends
end

2 个答案:

答案 0 :(得分:1)

你确实有两个程序,而不是一个。每个code_segment segment ... code_segment ends表示一个。将执行哪一个取决于PE header的入口点,因为它们之间没有引用/调用/跳转/交互。

因此,第一个代码段只是使用DOS-interrupt 21h, function 01h - Read char读取字符,然后使用DOS-interrupt 21h, function 4Ch - Exit program退出程序。

第二个代码段是错误的。这是一个使用DOS-interrupt 21h, function 01h - Read char的无限循环读取字符,并且永远不会超出JMP,因为不存在“退出”#39}。条件/指令。

答案 1 :(得分:0)

int表示中断。您的示例使用以下中断:

mov ah, 01h
int 21h   

用于读取标准输入上的字符

mov ah, 4ch
int 21h   

用于退出应用程序。

source