繁体   English   中英

在Assembly x86 16位上分割字符串

[英]Split strings on Assembly x86 16-bit

我正在尝试编写一个程序,该程序从键盘读取3个字符串,然后以小写形式显示2个字符串,最后一个以大写形式显示。 这是到目前为止,我所拥有的:我可以读取字符串,但是随后它将所有内容都转换为大写。 无论如何,仅转换最后一个字符串? 提前致谢

.MODEL SMALL
.DATA
    MSG  DB  0DH,0AH, 'ENTER A STRING: $'
    MSG2 DB  0DH,0AH, ' YOUR STRING IS  :-----> :  $'
    STR1 DB  255 DUP(?)
.CODE
BEGIN:

    MOV AX,@DATA
    MOV DS,AX

    LEA DX,MSG  
    MOV AH,09H
    INT 21H

    LEA SI,STR1 
    MOV AH,01H

READ:
    INT 21H 
    ;MOV BL,AL

    CMP AL,0DH
    JE  DISPLAY

    SUB AL,20H
    MOV [SI],AL
    INC SI

    ;CMP BL,0DH
    JMP READ

DISPLAY:

    MOV AL,'$'  ;caracter '$'
    MOV [SI],AL ;

    LEA DX,MSG2 
    MOV AH,09H  
    INT 21H 


    LEA DX,STR1 
    MOV AH,09H  
    INT 21H

    ; MOV AH,4CH
    ; INT 21H

.EXIT
END BEGIN

我正在使用TASM。

谢谢大家的评论。 我可以这样解决:

.MODEL SMALL
.STACK 100h
.DATA
    Mensagem1  DB  "Meu Prompt>>",'$',13,10
    first DB  80 DUP (?)
.CODE
    MOV AX, @DATA
    MOV DS, AX
    LEA DX, Mensagem1
    MOV AH, 9
    INT 21H
    LEA SI, first   
READ:
    MOV AH, 01H
    INT 21H
    CMP AL, 13
    JE  DONE
    OR AL, 20H
    MOV [SI], AL
    INC SI
    CMP AL, 20H
    JE READ2
    JMP READ
READ2:
    INT 21H
    CMP AL, 13
    JE  DONE
    OR AL, 20H
    MOV [SI], AL
    INC SI
    CMP AL, 20H
    JE READ3
    JMP READ2
READ3:
    INT 21H
    CMP AL, 13
    JE  DONE
    XOR AL, 20H
    MOV [SI], AL
    INC SI
    JMP READ3
DONE:
    MOV AL, '$'
    MOV [SI], AL
    LEA DX, Mensagem1
    MOV AH, 9
    INT 21H
    LEA DX, first
    MOV AH, 9
    INT 21H
    MOV AH,4CH
    INT 21H
END

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM