汇编语言实验八核心考点
建议先自己思考问题的答案,不懂则返回看书
分析程序,在运行前思考:这个程序是否能够正确返回?
运行之后再思考:为什么是这种结果?
解析: 核心考点, CPU在执行jmp指令的时候并不需要转移的目的地址,而包含的是转移的位移。这个位移,是编译器根据汇编指令中的“标号”计算出来的。在DOS下单步执行,仔细观察每一条jmp指令的机器码,它表示的是相对于当前指令的位移,不是标号的地址。
assueme cs:codesg
codesg segment
mov ax,4c00h
int 21h
start: mov ax,0
s: nop
nop
mov di,offset s
mov si,offset s2
mov ax,cs:[si]
mov cs:[di],ax
s0: jmp short s
s1: mov ax,0
int 21h
mov ax,0
s2: jmp short s1
nop
codesg ends
end start
要是不懂,点击下面链接查看该博主的博文,讲解的很详细:
链接: 王爽《汇编语言》(第三版)实验8解析(超详细).