Intel x86汇编代码行为问题

时间:2011-06-20 10:40:14

标签: assembly intel

我有一个Intel汇编x86(16位版本)汇编代码,如下所示打印邮件。使用平面汇编程序在Win-7 32位上进行汇编。

ORG 100h
USE16

        mov ah, 09
        mov dx, message
        jmp  Displayit  ;unconditional jump

        mov ah,01
        int 21h

        mov ah,4ch
        int 21h

Displayit:
        int 21h

message db 'Testing assembly jump instruction', 0Ah, '$'
  1. 如果我移动消息的字符串定义(在下面的代码中),在开头,它不会打印该字符串?是什么原因?

  2. 此外,虽然我有指令mov ah, 01, int 21h来保持输出命令提示符/控制台不关闭,但它不起作用。控制台刚关闭,然后才能看到打印的消息?

  3. ORG 100h
    USE16
    message db 'Testing assembly jump instruction', 0Ah, '$'
    
    mov ah, 09
    mov dx, message
    jmp  Displayit  ;unconditional jump
    
    mov ah,01
    int 21h
    mov ah,4ch
    int 21h
    
    Displayit:
        int 21h
    

1 个答案:

答案 0 :(得分:6)

  1. 如果您在开头定义字符串,它将作为代码执行。这会导致崩溃或各种未定义的行为。

  2. 从不执行以mov ah,1开头的指令序列,跳过它。