注册 登录
编程论坛 汇编论坛

程序代码分析

神奈创 发布于 2013-04-12 19:40, 856 次点击
DATAS SEGMENT
 s1     DB "Enter the string:",0dh,0ah,24h
 s2        DB  ?
 s3        DB  0DH,0AH,24H;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
        DB 100 DUP(?)
 TOP    LABEL  WORD   ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
   
    MOV AX,STACKS
    MOV SS,AX
    LEA SP,TOP
        
    MOV SI,0
    LEA BX,s2
L1: MOV AH,1
    INT 21H
    MOV [BX],AL
    DEC BX
    INC SI
    CMP AL,0DH
    JNZ L1
   
    LEA DX,s3
    MOV AH,9
    INT 21H
   
   
   
    LEA DX,[BX]
    MOV AH,9
    INT 21H
            
L2:   
    MOV DX,[[BX]+SI]
    MOV AH,2
    INT 21H
    DEC SI
    CMP SI,0
    JA  L2
    ;此处输入代码段代码
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

请问为什么我只要将DATAS里面的s1那一段删掉,运行就直接一闪而过

3 回复
#2
hu9jj2013-04-12 22:13
试着分析程序,S1这段是起什么作用的,就会明白为什么会一闪而过了。
#3
神奈创2013-04-13 11:45
回复 2楼 hu9jj
这样在代码里面运行是完全没有用到的
#4
hu9jj2013-04-14 20:47
s1开始的地址是显示的数据。
1