我正在尝试定义字符串中的哪些单词按字母顺序排序,而必须循环遍历每个整个字符串并比较每个字符位置。我想我应该创建一个字母表字符串,然后使用一些汇编函数将它与我的字符串中的每个单词进行比较,但现在我不知道如何处理它。
我写了一些代码来从控制台获取字符串:
DATA SEGMENT
STR1 DB "enter your sring:$"
STR2 DB "my string is:$"
INSTR1 DB 250 DUP("$")
NEWLINE DB 10,13,"$"
ALPHABET DB "abcdefghijklmnopqrstuvwxyz"
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA, CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA SI,INSTR1
MOV AH,09H
LEA DX,STR1
INT 21H
MOV AH,0AH
MOV DX,SI
INT 21H
MOV AH,09H
LEA DX,NEWLINE
INT 21H
MOV AH,09H
LEA DX,STR2
INT 21H
MOV AH,09H
LEA DX,INSTR1+2
INT 21H
MOV AH,09H
LEA DX,NEWLINE
INT 21H
CODE ENDS
END START
请给我一些建议:
我该怎么做?
答案 0 :(得分:1)
一种解决方案是使用函数01h而不是0Ah。基本上你是一次遍历输入的一个字符,但它是在输入时完成的。
Loop: mov cl, al ; Move previously read character
mov ah, 1
int 21h
sub cl, al ; Carry set means we are in ascending order
......
jc Loop
显然需要做更多的逻辑,但是在源头进行分析消除了指向缓冲区的开始并遍历它的需要。 Point是这样或那样的,字符串/输入中的下一个字符需要与前一个字符进行比较。