关于实验十二不明白的内存报错
assume cs:codecode segment
start: mov ax,cs
mov ds,ax
mov si,offset p1
mov ax,0
mov es,ax
mov di,200h
mov cx,offset p1end-offset p1
cld
rep movsb
mov ax,0
mov es,ax
mov word ptr es:,200h
mov word ptr es:,0
mov ax,4c00h
int 21h
p1: jmp short p2
db 'ERROR!'
p2: mov ax,cs
mov ds,ax
mov si,202h
mov ax,0b800h
mov es,ax
mov di,2*160+0*2
mov cx,6
show: push cx
mov cl,1010b
mov al,
mov es:,al
mov es:,cl
inc si
inc di ;这两个inc改成add di,2就没有事了。可以正常运行!
inc di ;
pop cx
loop show
p1end: nop
code ends
end start
执行后会报错。
如果把标号show处的两个inc di改成add di,2却能正常运行,始终不知道是为什么。也许可能还有其他的原因?小白不解。
{:10_266:}{:10_266:}{:10_266:}{:10_254:}在线等。
╮(╯_╰)╭纠结纠结ing……
来个大神帮小弟解答吧{:9_234:} iret assume cs:code
code segment
start:
;int 0
;mov ax, 4c00h
;int 21h
mov ax, cs
mov ds, ax
mov si, offset p1
mov ax, 0
mov es, ax
mov di, 200h
mov cx, offset p1end - offset p1
cld
rep movsb
mov ax, 0
mov es, ax
mov word ptr es:, 200h
mov word ptr es:, 0
mov ax, 4c00h
int 21h
p1:
jmp short p2
db 'ERROR!'
p2:
mov ax, cs
mov ds, ax
mov si, 202h
mov ax, 0b800h
mov es, ax
mov di, 2 * 160 + 0 * 2
mov cx, 6
show:
push cx
mov cl, 1010b
mov al,
mov es:, al
mov es:, cl
inc si
inc di ;这两个inc改成add di,2就没有事了。可以正常运行!
inc di ;
pop cx
loop show
iret ; 中断返回
p1end:
nop
code ends
end start
人造人 发表于 2017-5-23 13:13
谢谢版主的细心回答。待我有空回去再去瞅瞅,不会,继续补刀哈!{:5_91:} kyowjw01 发表于 2017-5-23 22:54
谢谢版主的细心回答。待我有空回去再去瞅瞅,不会,继续补刀哈!
^_^ {:5_107:}第一次发帖,不知道如何回复,删了自己的回复贴,扣了一点荣誉。{:10_266:}{:10_258:} 我现在准备做这个实验来看看做的人多不多{:5_109:}
页:
[1]