+ -
当前位置:首页 → 问答吧 → DATA段定义的数据 在debug下用d命令发现数据不在ds:0 而在ss:0

DATA段定义的数据 在debug下用d命令发现数据不在ds:0 而在ss:0

时间:2011-05-10

来源:互联网

Assembly code

DATAS SEGMENT
    BUF DB 'HELLO'
    LEN DB $-BUF
DATAS ENDS

CODES SEGMENT        
ASSUME CS:CODES,DS:DATAS
START:
    MOV SI,OFFSET BUF
    MOV BX,0
    
    MOV CX,OFFSET LEN 
L:        
    CMP BL,SS:[SI]
    JL MAX
    INC SI
    LOOP L
    JMP DISP               
   
MAX:
    MOV BYTE PTR BL,SS:[SI]
    INC SI
    LOOP L
    JMP DISP
    
DISP:
       MOV BYTE PTR DL,BL
       MOV AH,02H
       INT 21H
                     
    MOV AH,4CH
    INT 21H    
        
CODES ENDS
    END START



输出字符串内最大的字母
debug下发现 字符串hello在栈区ss:0000中而不再ds:0000 求解

作者: BSKnight   发布时间: 2011-05-10

引用楼主 bsknight 的回复:
Assembly code

DATAS SEGMENT
BUF DB 'HELLO'
LEN DB $-BUF
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV SI,OFFSET BUF
MOV BX,0

MOV CX,OFFSE……


你没有指定DS段
MOV AX,DATAS
MOV DS,AX
MOV SI,OFFSET BUF
...

作者: masmaster   发布时间: 2011-05-10