Я пытаюсь пропустить строку1 и скопировать альфа-символы в строку3. Код, который я до сих пор ниже, возможно, не самый лучший, но он работает до точки и помещает письмо в первую точку строки3. Однако в следующий раз он просто перезаписывает этот символ, пока я не останусь с пустой строкой в конце. Кто-нибудь знает, как исправить это, чтобы сохранить элемент string1 в следующее свободное пространство в string3? Большое спасибо, это сводит меня с ума !!!копировать определенные символы из одной строки в другую в сборке
MOV DX,OFFSET STRING1+2 ; dx = address of string1
mov bx, dx ; bx = dx = address of string1
mov ch, 0 ; set cx to string size for loop
mov cl, [bx+1]
; print prompt
call PTHIS
db 13, 10, "removed non-alphanumeric characters1: ",0
remove_char:
; check if it's not a lower case letter:
cmp byte ptr [bx], 'a'
jg ok3 ; if char is 'a' or above, goto 'ok3'
cmp byte ptr [bx], 'z'
jl ok3 ; if char is below 'z', goto 'ok3'
cmp [bx],'$'
je '$', next
; ... goto 'ok3' anyway... ("fall through")
inc bx ; next char.
ok3:
push [bx]
lea dx, string3+2
pop [bx]
mov bh, [bx]
mov string3+2, bh
inc bx ; next char.
loop remove_char
Я никогда раньше не видел этот синтаксис или инструкцию. Можете ли вы помочь мне понять это? 'je '$', next' Я не мог найти его документированным (но я потратил всего 5 минут на его поиск). –
Я не могу понять, почему вы нажимаете и вставляете эти три строки ... \t 'push [bx] // почему push? //// lea dx, string3 + 2 // Okay, point dx где-то //// pop [bx] // ненужная инструкция, bx не изменилась 'вы' push' bx, тогда вы ничего не делаете для bx , то вы 'pop bx'. Нет подсказки, почему вы это делаете (ps, прокомментируйте каждую строку, а вы делаете остальные, и вы увидите больше ошибок до того, как они произойдут.) –
Проделайте это с помощью отладчика и сообщите нам, что происходит после 'RET' в подпрограмме 'PTHIS'. –