|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 yijun 于 2014-10-27 23:32 编辑
assume cs:code
data segment
db 'conversation', 0
data ends
code segment
start: 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 ;如果是0跳出循环
mov al, [si]
mov es:[di], al
inc si
add di, 2
mov bx, offset s - offset ok;设置从标号ok到标号s的转移位移
;mov ax, offset s
;mov ax, offset ok
int 7ch;转移到标号s处
ok: nop
mov ax, 4c00h
int 21h
code ends
end start
编译后debug
debug 13_2.EXE
-u
1419:0000 B81814 MOV AX,1418
1419:0003 8ED8 MOV DS,AX
1419:0005 BE0000 MOV SI,0000
1419:0008 B800B8 MOV AX,B800
1419:000B 8EC0 MOV ES,AX
1419:000D BF8007 MOV DI,0780
1419:0010 803C00 CMP BYTE PTR [SI],00
1419:0013 740E JZ 0023
1419:0015 8A04 MOV AL,[SI]
1419:0017 26 ES:
1419:0018 8805 MOV [DI],AL
1419:001A 46 INC SI
1419:001B 83C702 ADD DI,+02
1419:001E BBEDFF MOV BX,FFED
1419:0021 CD7C INT 7C
1419:0023 90 NOP
1419:0024 B8004C MOV AX,4C00
1419:0027 CD21 INT 21
这一句
mov bx, offset s - offset ok
为什么变成了
MOV BX, FFED
理论上应该是
MOV BX, 0023 - 0010 ;------->MOV BX, 0013
为什么会变成了FFED呢,
我用这两句测试时
;mov ax, offset s
;mov ax, offset ok
都能正确得到offset s 和offset ok的值
|
|