在 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: