0
Je suis nouveau à l'assemblage, aussi j'utilise DOSBoxsuivant et caractère précédent en majuscules
Je suis en train d'imprimer, en majuscules, la lettre précédant et suivant l'ordre alphabétique d'une lettre minuscule entrée par la utilisateur. (par exemple si l'utilisateur entre c
, il va imprimer B
et D
)
Mais mon code imprime des échantillons étranges.
Mon code:
.MODEL SMALL
.STACK 100H
.DATA
MSG1 DB "Enter a letter between a and z:$"
MSG2 DB "The previous letter is:$"
MSG3 DB "The next letter is:$"
X DB ?
.CODE
MAIN PROC
; initialize DS
MOV AX, @DATA
MOV DS, AX
; print MSG1
LEA DX, MSG1
MOV AH, 9h
INT 21H
; read lowercase letter
MOV AH,1h
INT 21H
; save the letter X
MOV X, AL
; printing new line
MOV DL, 10
MOV AH, 02h
INT 21h
MOV DL, 13
MOV AH, 02h
INT 21h
; print MSG2
MOV AH, 9h
LEA DX, MSG2
INT 21H
; The previous letter
MOV DL, X
SUB DL, 1
ADD DL, 48
MOV AH, 2h
INT 21H
; print MSG3
MOV AH, 9h
LEA DX, MSG3
INT 21H
; The previous letter
MOV DL, X
ADD DL, 1
ADD DL, 48
MOV AH, 2h
INT 21H
; DOS exit
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
Pourquoi vous 'ADD DL, 48'? C'est seulement nécessaire pour la conversion de texte en entier mais vous ne faites rien de tout cela. – Jester
que dois-je faire alors? – Halah
Que diriez-vous de supprimer ceux-ci? Le reste semble correct. Oh, vous avez aussi besoin de majuscules ... eh bien, changez 'dl, 1' en' sub dl, 31' et 'sub dl, 1' en' sub dl, 33'. – Jester