|
发表于 2014-10-12 16:10:38
|
显示全部楼层
- assume cs:code
- code segment
- start:mov ax,cs
- mov ds,ax
- mov si,offset do0 ;设置ds:si指向源地址
-
- mov ax,20h
- mov es,ax
- mov di,0h
-
- mov cx, offset do0end - offset do0
-
- cld ;设置cx传输方向
- rep movsb
-
- ;设置中断向量表中中断地址
- mov ax,0
- mov es,ax
- mov word ptr es:[0*4],200h
- mov word ptr es:[0*4+2],0
-
- mov ax,4c00h
- int 21h
- do0:jmp short do0start
- ;db "overflow!"
- db "!!!!!!!!!"
- do0start:mov ax,cs
- mov ds,ax
- mov si,202h
- mov ax,0b800h
- mov es,ax
- mov di,12*160+36*2
-
- mov cx,9
- s: mov al,[si]
- mov es:[di],al
- inc si
- add di,1
- mov al,02h
- mov es:[di],al
- inc di
- dec cx
- cmp cx,0
- ja s
- ;loop s
-
- mov ax,4c00h
- int 21h
- do0end:nop
- code ends
- end start
复制代码
不知道是否是你要的?
为什么不能push ip?
这个得从Inter指令说起,因为CPU是不认识汇编代码的,汇编程序最终全都需要编译成二进制。所以每条汇编指令都需要翻译成相对应的指令,CPU才能执行我们写的程序。那汇编程序翻译成对应的二进制代码需要对应的规则,这个规则就是OpCode表。这个表中只有下面附件表。这个表没有IP寄存器,所以汇编程序中不能出现操作ip的代码。不知道我说清楚没有,能力有限啊~:cry
|
评分
-
参与人数 2 | 荣誉 +10 |
鱼币 +10 |
贡献 +3 |
收起
理由
|
逆流杀
| + 5 |
+ 5 |
+ 3 |
谢谢你的帮助,嘿嘿 |
拈花小仙
| + 5 |
+ 5 |
|
感谢楼主无私奉献! |
查看全部评分
|