我試圖通過字符串1循環並將字母字符複製到字符串3中。我到目前爲止的代碼在下面,可能不是最好的,但是它對某個點起作用,並將該字母放入string3的第一個點。但是,下一次只是覆蓋該字符,直到末尾留下空字符串。有誰知道如何解決它,以便它將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'$',接下來'我找不到記錄(但我只花了5分鐘的時間尋找它)。 – 2014-11-25 00:44:48
我無法理解你爲什麼在這三條線上推送和彈出... \t 'push [bx] //爲什麼推? //// lea dx,string3 + 2 //好的,指向某處的dx //// pop [bx] //不必要的指令,bx沒有改變'你'推'bx,那麼你對bx不做任何事情,那麼你'流行bx'。不知道爲什麼你這樣做(ps,註釋每一行以及你做其他的,你會在它們發生之前看到更多的錯誤)。 – 2014-11-25 00:48:30
用你的調試器來逐步瞭解這一點,讓我們知道'RET'語句在'PTHIS'子程序中。 – 2014-11-25 01:00:37