- [mywiil] 可以看看别人的程序处理思路,把属性定义成一个数据段。那样处理起来更好更合理。 08/21 03:36
- [mywiil] 没问题。 08/21 03:31
- [mywiil] OK。加油。 08/21 03:28
- [mywiil] 嗯哪。 08/21 03:28
- [mywiil] 恩,没问题,但是结果首先要自己先的出来,然后,在运行验证,反了就没意义咯 08/21 03:24
- [masmaster] NB~~~ 08/13 21:38
- [masmaster] 咋就一个蛋蛋啦? 08/11 10:11
- [masmaster] 好新鲜的水果呀~~~(¯﹃¯)~~~ 08/09 13:49
- [masmaster] good~~~ 08/07 22:53
- [mess] 正确。 08/06 10:28
- [masmaster] 没有呀! 08/13 22:44
- [游客] 只有板凳了...希望有一天能热泪庆祝来访人数过万...啊哈... 08/09 18:50
- [masmaster] 你的博客真好玩 08/07 17:08
[2010-08-15 19:14] 实验八
分析:实验九这个程序为什么说其奇怪,原因是它的这两条指令
mov ax,4c00h
int 21h
不在程序末尾,而跑到程序开头去了,按常理顺序执行的话从start开始,程序将不会碰到这两条指令,也回不到cmd的操作环境下。然而程序中存在着的 jmp指令使程序执行又返回至那两条指令。具体如下:
该程序中
assume cs:codesg
codesg segment
mov ax,4c00h
int 21h
start:mov ax,0 占三个机器码
s:nop
nop
mov di,offset s 此时di 为8
mov si,offset s2 ci 为20
mov ax,cs:[si]
mov cs:[di],ax 这两条指令把标号s2所在的内存单元内容(字节)复制到s所在的内存单元内容,即把两个nop给覆盖了,机器码内容为EBF6(F6为补码-10)
s0:jmp short s 程序执行到这一步跳到s标号处(EBF6) 最后再跳到偏移地址为0的那两条指令,程序结束。
s1:mov ax,0 以下均不被执行
int 21h
mov ax,0
s2:jmp short s1
nop
codesg ends
end start
mov ax,4c00h
int 21h
不在程序末尾,而跑到程序开头去了,按常理顺序执行的话从start开始,程序将不会碰到这两条指令,也回不到cmd的操作环境下。然而程序中存在着的 jmp指令使程序执行又返回至那两条指令。具体如下:
该程序中
assume cs:codesg
codesg segment
mov ax,4c00h
int 21h
start:mov ax,0 占三个机器码
s:nop
nop
mov di,offset s 此时di 为8
mov si,offset s2 ci 为20
mov ax,cs:[si]
mov cs:[di],ax 这两条指令把标号s2所在的内存单元内容(字节)复制到s所在的内存单元内容,即把两个nop给覆盖了,机器码内容为EBF6(F6为补码-10)
s0:jmp short s 程序执行到这一步跳到s标号处(EBF6) 最后再跳到偏移地址为0的那两条指令,程序结束。
s1:mov ax,0 以下均不被执行
int 21h
mov ax,0
s2:jmp short s1
nop
codesg ends
end start
评论次数(0) |
浏览次数(304) |
类型(汇编作业) |
收藏此文 |