yijun 发表于 2014-10-27 23:07:16

检测试点13.1 (2)

本帖最后由 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 , 0
                        je ok                        ;如果是0跳出循环
                        mov al,
                        mov es:, 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 ,00
1419:0013 740E          JZ      0023
1419:0015 8A04          MOV   AL,
1419:0017 26            ES:
1419:0018 8805          MOV   ,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的值


kyowjw01 发表于 2017-5-30 16:34:37

{:10_269:}减反了。
页: [1]
查看完整版本: 检测试点13.1 (2)