我试着写一个程序,输入一个字符串,然后输入要删除的单词。在一个循环中,我试着比较第一个和第二个字符串的字符,然而条件总是返回正
我正在使用仿真器emu8086
name test
.model small
.stack 100h
.data
wrd_ask db "word: $"
string_ask db "string: $"
w_buffer db 255
wrd db 256 dup('$')
s_buffer db 255
string db 256 dup('$')
.code
macro convert buffer
push ax
push dx
lea dx, buffer
mov ah, 0Ah
int 21h
pop dx
pop ax
endm
start:
mov ax, @data
mov ds, ax
mov dx, offset string_ask
mov ah, 09h
int 21h
convert s_buffer
mov dx, offset wrd_ask
mov ah, 09h
int 21h
convert w_buffer
mov si, 0
mov di, 0
mov cx, 255
cycle:
inc si
inc di
cmp string[si], wrd[di]
je same
same:
mov dl, wrd[di]
mov ah, 02h
int 21h
LOOP cycle
end start
1条答案
按热度按时间jaxagkaj1#
你不能像这样比较两个内存字节。指令集不允许这样做。你需要在比较另一个之前将其中一个加载到寄存器中:
第一次
在这里你需要一些介于两者之间的东西(在'not equal'的情况下你想要的任何东西)。否则,不管比较的结果如何,在 same 的代码都将被执行。
请尝试以下操作:
使用以下句子:“堆栈溢出岩石”
用这个词:“堆栈下溢”
观察结果“stack”(第一个区别是“o”和“u”之间。