回 帖 发 新 帖 刷新版面

主题:[讨论]简单的几句汇编语言,,请高手解释下

我才刚学习汇编..有些语句不懂..请大家帮我看看
下面是一个很简单的大小写转换的汇编程序:
DATA    SEGMENT
InputStr    DB    'Please input a letter:$'
NEXT    DB    0AH,0DH,'$'////请问下这句是什么意思呢,,在这定义有什么用??
DATA ENDS
CODE      SEGMENT
ASSUME CS:CODE,DS:DATA////这句是什么意思呢?assume的作用是???,data段定义在前面,为什么没有在data段前面assume ds:data而在code代码段来分配呢?????
START:    MOV AX,DATA
    MOV DS,AX
INPUT:    LEA DX,INPUTSTR  
    MOV AH,09H            
    INT 21H
    MOV AH,01H            
    INT 21H
InL:    CMP AL,'a'
    JB InB
    CMP AL,'z'
    JA EXIT  
    
    XOR AL, 20H
    JMP PRINT
InB:    CMP AL,'A'
    JB EXIT
    CMP AL,'Z'
    JA InL 
    
    XOR AL ,20H    
Print:    MOV DL,    AL
    MOV AH,02H
    INT 21H
    LEA DX,NEXT  ////这句的作用是??为什么要先把它付给lea才调用9号功能呢:??
    MOV AH,09H
    INT 21H
    JMP INPUT
EXIT:    MOV AH,4CH
    INT 21H
CODE    ENDS
    END START////为什么end start没有写在code ends的前面呢????

回复列表 (共2个回复)

沙发

感觉这都是格式的问题。

板凳

NEXT    DB    0AH,0DH,'$'////请问下这句是什么意思呢,,在这定义有什么用??
在这里是回车和换行 的意思


ASSUME CS:CODE,DS:DATA////这句是什么意思呢?assume的作用是???,data段定义在前面,为什么没有在data段前面assume ds:data而在code代码段来分配呢?????

数据段你已经定义了,接下来你要做的是代码段,当然是写代码了


LEA DX,NEXT  ////这句的作用是??为什么要先把它付给lea才调用9号功能呢:??

是把NEXT的偏移地址送给DX寄存器  相当于MOV DX,OFFSET NEXT


END START////为什么end start没有写在code ends的前面呢????
 它的作用是结束整个程序

我来回复

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