在 x86 程序集中增加一个字符串
increment a string in x86 assembly
如何将字符串中的每个字符递增 3?
我实际上是装配新手,对此我不太了解:/
我有一个代码接受字符串输入并在屏幕上向用户显示输出
.model small
.stack 100h
.data
STR1 DB "ENTER YOUR STRING : $"
STR2 DB "YOUR STRING IS : $"
INSTR1 DB 20 DUP("$")
NEWLINE DB 10,13,"$"
.code
main proc
Mov ax,@data
mov ds,ax
LEA SI,INSTR1
;Get STRING
MOV AH,09H
LEA DX,STR1
INT 21H
MOV AH,0AH
MOV DX,SI
INT 21H
MOV AH,09H
LEA DX,NEWLINE
INT 21H
;PRINT STRING
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
mov ah,4ch
int 21h
main endp
end main
假设用户写 'HELLO' 那么我想要的输出是 'KHOOR'。那我该怎么做呢?
在评论后插入下一个循环 ;PRINT STRING
:
ADD SI, 2 ;◄■■ SI : POINTER TO STRING.
INCREMENT:
MOV AL, [SI] ;◄■■ GET CURRENT CHAR.
CMP AL, 13 ;◄■■ IF CHAR IS END OF STRING
JE INCREMENT_END
ADD AL, 3 ;◄■■ INCREASE CHAR BY 3.
MOV [SI], AL ;◄■■ PUT CHAR BACK INTO STRING.
INC SI ;◄■■ MOVE TO NEXT CHAR.
JMP INCREMENT ;◄■■ REPEAT LOOP.
INCREMENT_END:
如何将字符串中的每个字符递增 3? 我实际上是装配新手,对此我不太了解:/ 我有一个代码接受字符串输入并在屏幕上向用户显示输出
.model small
.stack 100h
.data
STR1 DB "ENTER YOUR STRING : $"
STR2 DB "YOUR STRING IS : $"
INSTR1 DB 20 DUP("$")
NEWLINE DB 10,13,"$"
.code
main proc
Mov ax,@data
mov ds,ax
LEA SI,INSTR1
;Get STRING
MOV AH,09H
LEA DX,STR1
INT 21H
MOV AH,0AH
MOV DX,SI
INT 21H
MOV AH,09H
LEA DX,NEWLINE
INT 21H
;PRINT STRING
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
mov ah,4ch
int 21h
main endp
end main
假设用户写 'HELLO' 那么我想要的输出是 'KHOOR'。那我该怎么做呢?
在评论后插入下一个循环 ;PRINT STRING
:
ADD SI, 2 ;◄■■ SI : POINTER TO STRING.
INCREMENT:
MOV AL, [SI] ;◄■■ GET CURRENT CHAR.
CMP AL, 13 ;◄■■ IF CHAR IS END OF STRING
JE INCREMENT_END
ADD AL, 3 ;◄■■ INCREASE CHAR BY 3.
MOV [SI], AL ;◄■■ PUT CHAR BACK INTO STRING.
INC SI ;◄■■ MOVE TO NEXT CHAR.
JMP INCREMENT ;◄■■ REPEAT LOOP.
INCREMENT_END: