|
主题 : : 检测点2,取代码段长度,百思不得其解 [已解决] |
回复[ 4次 ]
点击[ 385次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-10-01 13:27 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:9
注册日期:2009-09-16 17:09 |
s:cmp byte ptr [si],0
je ok
mov al,[si]
mov es:[di],al
mov byte ptr es:[di+1],2
inc si
add di,2
mov bx,offset s-offset ok (问题在这,OK-S才是代码长度才对,但用OK-S程序就不正确)
怎么是会是S-OK呢?
int 7ch
ok:
mov ax,4c00h
int 21h | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-10-01 13:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:9
注册日期:2009-09-16 17:09 |
有兴趣的请复制以下完整代码调试:
assume cs:code
data segment
db 'converstation',0
data ends
code segment
start:
mov ax,cs
mov ds,ax
mov si,offset j
mov ax,0
mov es,ax
mov di,200h
mov cx,offset j_ok-offset j
cld
rep movsb
mov word ptr es:[7ch*4],200h
mov word ptr es:[7ch*4+2],0
mov ax,data
mov ds,ax
mov si,0
mov ax,0b800h
mov es,ax
mov di,12*160
s:cmp byte ptr [si],0
je ok
mov al,[si]
mov es:[di],al
mov byte ptr es:[di+1],2
inc si
add di,2
mov bx,offset ok-offset s ;用OK减S,出现错误,换回来显示正确
int 7ch
ok:
mov ax,4c00h
int 21h
j: push bp
mov bp,sp
add [bp+2],bx
pop bp
iret
j_ok:nop
code ends
end start | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-10-01 13:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:9
注册日期:2009-09-16 17:09 |
|
|
|
|
|
[第3楼]
[ 回复时间:2009-10-01 13:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:9
注册日期:2009-09-16 17:09 |
|
|
|
|
|
[第4楼]
[ 回复时间:2009-10-01 13:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:9
注册日期:2009-09-16 17:09 |
此贴由 贴主 于 [ 2009-10-01 13:47 ] 结贴。 结贴原因:问题已解决 | | |
|