这个O号中断哪里有问题啊
和实验12的答案好像没什么区别啊,可是运行实验12答案可以实现功能,运行我这个为什么就不行呢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 word ptr es:,200h
mov word ptr es:,0h
mov ax,4c00h
int 21h
do0:jmp short s
db "divide error"
s:mov ax,0b800h
mov es,ax
mov di,160*12+36*2
mov si,202h
mov ax,cs
mov ds,ax
mov cx,12
s0:mov al,
moves:,al
inc si
add di,2
jmp short s0
mov ax,4c00h
int 21h
do0end:nop
code ends
end start
本帖最后由 莫名其妙 于 2012-2-29 14:28 编辑
mov cx,12
s0:mov al,
moves:,al
inc si
add di,2
jmp short s0
CX 木有参与循环jmp 无条件跳转!~
要用loop s0
谢谢了,原来我是用的条件跳转,后来改成循环,下面没有改....... 我改成下面这样后为什么,显示后面多了个0,还有个乱码呢
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:,200h
mov word ptr es:,0h
mov ax,4c00h
int 21h
do0:jmp short s
db "divide error",'0'
s:mov ax,0b800h
mov es,ax
mov di,160*12+34*2
mov si,202h
mov ax,cs
mov ds,ax
mov cx,12
s0:
mov ch,0
mov cl,
jcxz ok
mov al,
moves:,al
inc si
add di,2
jmp short s0
ok:mov ax,4c00h
int 21h
do0end:nop
code ends
end start 本帖最后由 莫名其妙 于 2012-3-2 09:09 编辑
付笑 发表于 2012-2-29 22:20 http://bbs.fishc.com/static/image/common/back.gif
我改成下面这样后为什么,显示后面多了个0,还有个乱码呢
assume cs:code
db "divide error",'0'
要细心阿!!! 0不能加 ' ' 单引号 加了表示的是字符了字符就要显示他的ASCII码 (双引号表示的是字符串!~)
而你要用jcxz 判断 只能是数据0 不是判断ascii码
mov cx,12 ;这里定义了cx =12 下面接着就给chcl 修改了你这里定义的到底什么意思呢 ?
;你要用循环 下面就用loop 不能用jmp而且不用做 jcxz的判断
;你要 用 jcxz 和jmp 那上面就不要用 cx=12做循环 只要给上面那个'0' 改成 0 就行了
; 这样jcxz 才会判断cx是不是等于0
s0:
mov ch,0
mov cl,
jcxz ok
mov al,
moves:,al
inc si
add di,2
jmp short s0
亲 搞定了 明白了要给好评哦!~
本帖最后由 莫名其妙 于 2012-3-2 09:09 编辑
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:,200h
mov word ptr es:,0h
mov ax,4c00h
int 21h
do0:jmp short s
db "divide error",0
s:mov ax,0b800h
mov es,ax
mov di,160*12+34*2
mov si,202h
mov ax,cs
mov ds,ax
; mov cx,12 ;如果用绿色CX循环的部分 请删掉蓝色部分
s0:
mov ch,0
mov cl,
jcxz ok
mov al,
moves:,al
inc si
add di,2
jmp short s0
; loop s0 ;用loop 执行循环
ok:mov ax,4c00h
int 21h
do0end:nop
code ends
end start
已经OK了!~
这个是溢出错误的
assume cs:code
code segment
start: mov ax,10000
mov al,10
div al
mov ax,4c00h
int 21h
code ends
end start
学习学习
页:
[1]