[英]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.