大家学习汇编语言的时候都需要一个能够编译执行的IDE。有的人用的win7或者更老的系统,就可以直接使用debug。而比较新的系统没有debug,就需要一个模拟器了,无论是DOSBox还是emu8086,都能满足我们学习的基本需求。
但是,这两种模拟器不是没有区别的,最近我就发现了一点小小的区别,希望能与大家分享一下。
1. 段内短转移
首先请看下面这段代码
assume cs:codesg
codesg segment
start:mov ax, 0
mov bx, 0
jmp short s
add ax, 1
s:inc ax
codesg ends
end start
这段代码很简单,我想我就不用详细介绍它的含义了。我们重点来看看这句:
jmp short s
这是一句段内短转移代码,它的作用是使得IP
从jmp
下一句的代码直接跳到s标号所指示的地址(如果还不理解的话可以看一看王爽《汇编语言(第3版)》9.3节对此的解释)。那么这句代码在机器语言中怎样表示呢?我们分别用emu8086和DOSBox来看一看。
- emu8086