J'essayais de créer un code d'assemblage, de demander une chaîne, de commencer à imprimer la chaîne et d'imprimer la longueur désirée. supposons que start et length sont toujours valides Pouvez-vous m'aider à déterminer le début et la longueur.Impression d'une chaîne avec un langage d'assemblage de début et de longueur
Comment ça devrait fonctionner:
Enter String: Hello World
Enter Start: 3
Enter Length: 5
Mid-String: llo W
J'ai un problème sur la façon de déterminer le début et la longueur de la chaîne. J'ai essayé plusieurs choses qui est montré dans mon code ci-dessous:
.model small
.stack
.data
msg1 db "Enter String:$"
msg2 db 13,10,"Enter Start:$"
msg3 db 13,10,"Enter Length:$"
msg4 db 13,10,"Mid-String:$"
nwln db 13,10
mySample label byte
maxlen db 10
actlen db 0
string db 19 dup (?)
.code
mov ax,@data
mov ds,ax
lea dx, msg1 ;print msg1
mov ah,9
int 21h
lea dx,mySample ;accept string
mov ah,0Ah
int 21h
mov bh,0
mov bl,maxlen
mov string[bx],'$'
mov ah,9
lea dx,string ;print string accept
int 21h
lea dx, msg2 ;print msg2 and accept start
mov ah,9
int 21h
mov ah,1
int 21h
sub al,30h
mov bh,0
mov bl,al
lea dx, msg3 ;print msg3 and accept length
mov ah,9
int 21h
mov ah,1
int 21h
sub al,30h
mov dl,al
;mov maxlen,dl
mov bh,0
mov bl,maxlen
mov string[bx],'$'
lea dx,msg4 ;print msg4
mov ah,9
int 21h
lea dx,string ;print mid-string
int 21h
mov ah,4ch
int 21h
END
Lorsque vous effectuez un seul pas dans un débogueur, les nombres que vous lisez se terminent-ils réellement dans des registres comme prévu? Les valeurs dans les registres avant le dernier int 21h sont-elles celles que vous attendez d'elles? Si non, travaillez en arrière pour trouver où les choses ont cessé de se comporter comme vous l'attendiez. –
Chouny, il y a une nouvelle réponse à votre question, vérifiez-la! –