我试着写一个8086汇编程序来连接两个给定的字符串。为了做到这一点,我使用了一个“REP MOVSB”指令,但是程序运行得不好。所以我写了一个程序来静态连接两个字符串,但是看起来“REP MOVSB”对字符串一点影响都没有。下面是我为测试写的代码部分:
data segment
string1 db "Lotfi", 0
string2 db "Ali ", 0
data ends
code segment
ASSUME CS: code, DS: data
start:
cld
mov ax , data
mov DS , ax
mov SI , offset string1
mov DI , offset string2
add DI , 3 ; Adding the length of destination string to the DI
mov cx , 5
rep movsb ; This should concat two strings
; Printing the result character by character on the console
mov SI , offset string2
l: lodsb ; Printing loop
mov dl, al
mov ah, 2h
int 21h
jmp l
hlt
code ends
end start
代码的结果如下所示:
Ali ü,Z0???... (And so)
我的密码有什么问题?
2条答案
按热度按时间sgtfey8w1#
movsb
从DS:SI移动到ES:DI。您加载了DS寄存器,但没有加载ES寄存器。您只需添加一行:
r3i60tvu2#
输出将显示在TASM窗口中