汇编语言(王爽第三版)实验8分析一个奇怪的程序
(2017-04-18 08:45:45)
标签:
汇编王爽it教育 |
分类: 汇编语言(王爽第三版)实验 |
实验八 分析一个奇怪的程序
题目:分析下面程序,在运行前思考:这个程序可以正确返回吗?
运行后思考:为什么是这样的结果?
通过这个程序加深对相关内容的理解.
代码如下:
assume 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
程序分析:
1. 看懂程序从何处入口?有start标号的地方(当然是和end start匹配的)。
2. s:标号语句nop作用,在运行时在代码段分配一个字节的空间。(机器码90,在内存中就是90H),它的作用是方便在程序运行时代码段分配空间,在此写入代码(实际是机器码)。执行二次nop后,在cs段中分配了2个字节空间,内容都是90H。
3.
程序一直自顶向下执行着,直到遇到S0标号。
;mov ax,0 ==3byte; int 21H==2byte; mov ax 4c00H==3byte)也就是程序从mov ax 4c00H开始执行了,直到int 21H正常结束程序。