assume cs:code
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset do0end-offset do0
cld
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 ;这个short也占地方啊
db "d4i4v4i4d4e4 4e4r4r4o4r4!4" ;绿蓝底红字 醒目一点
do0start:
mov ax,cs
mov ds,ax
mov si,202h ;202h与jmp short do0start长度有关
mov ax,0b800h
mov es,ax
mov di,12*160+36*2 ;偶数 放置字符
mov cx,26
s:
mov al,[si]
mov es:[di],al
inc si
inc di
loop s
mov ax,4c00h
int 21h
do0end:nop
code ends
end start
调试无误
- [huangbeidu] 哦 原来这样 07/05 22:27
- [游客] h回答正确。 07/02 08:18
- [游客] 每一个command窗口都是一个独立的模拟dos环境的,所以,关闭窗口后,这个环境就消失了,你在这个 07/02 08:12
- [huangbeidu] 有点不明白为什么关闭窗口后 再运行除法溢出的程序 还是老样子 怎么让它常驻内存? 07/02 00:15
- [huangbeidu] 是 SF应该是0的 06/05 02:20
- [tomato] Right! 05/31 18:19
- [tomato] 第一题的最后一条指令的答案写错了。建议上机验证一下。 05/31 18:18
- [huangbeidu] 这个是不算精简版的精简版了 代码是没有少多少 就是嫌以前的那个程序把数据段改成那样 在实际的操作中恐 05/14 17:29
- [游客] 可以参考前面的那个不会溢出的除法处理方式来想想这个程序怎么去支持dx为非0的数据显示,让显示的数据超 04/29 10:31
- [游客] 绝对有帮助。 04/28 11:47
[ huangbeidu 发表于 2009-07-02 00:15 ]
有点不明白为什么关闭窗口后 再运行除法溢出的程序 还是老样子 怎么让它常驻内存?
[ 游客 发表于 2009-07-02 08:12 ]
每一个command窗口都是一个独立的模拟dos环境的,所以,关闭窗口后,这个环境就消失了,你在这个环境中的操作也就没有用了。每个command窗口的环境都是独立的,你在窗口A的操作在窗口B也是没有作用的。
要想让程序常驻内存,这个是一个专门的知识点,你可以查查com文件和常驻内存的实现,百度一下吧。
[ huangbeidu 发表于 2009-07-05 22:27 ]
哦 原来这样