回 帖 发 新 帖 刷新版面

主题:高手指点一下

NAME EX10          
DATA1 SEGMENT          
S1 DB ′ABCDEFGHIJKLMNOPQRSTUVWXYZ′         
COUNT EQU $-OFFSET S1   
DATA1 ENDS 
DATA2 SEGMENT
S2 DB 27 DUP (?)
DATA2 ENDS 
CODE  SEGMENT
ASSUME CS:CODE,DS:DATA1,ES:DATA2  
START:MOV AX,DATA1 
MOV DS,AX      
MOV AX,DATA2      
MOV ES,AX      
MOV SI,OFFSET S1     
MOV DI,OFFSET S2
MOV CX,COUNT 
CLD   
REP MOVSB 
MOV BYTE  PTR ES:〔DI〕,′$′
MOV DX ,OFFSET S2     
MOV AX,ES   
MOV DS,AX   
MOV AH,9H  
INT 21H    
MOV AH,4CH   
INT 21H    
CODE  ENDS    
     END START 
当中的
MOV DX ,OFFSET S2     
MOV AX,ES   
MOV DS,AX 
不太明白尤其是后两句

回复列表 (共1个回复)

沙发

是要把s1的字符串移到s2并在屏幕上显示出来。

DOS的09号调用,要求DS:DX指向字符串(s2)的首地址,
偏址是 OFFSET S2,段址是ES,所以

MOV DX ,OFFSET S2     
MOV AX,ES   
MOV DS,AX 

我来回复

您尚未登录,请登录后再回复。点此登录或注册