【发布时间】:2016-04-12 20:54:33
【问题描述】:
我编写了一些 8086 汇编代码来反转字符串。我对组装比较陌生,所以请多多包涵。
逻辑是我定义了一个名为“str1”的字符串。我将它移到 SI 寄存器中。假设字符串'str1'是"Hello$",那么我将'str1'+5的地址加载到SI中。现在,我加载一个地址,比如 5000 到 DI。我将 SI 中的每个字符加载到 DI 中,并且每次我增加 SI 并减少 SI 直到 5 次。
这里是代码
assume cs:code,ds:data
data segment
str db "Hello$"
data ends
code segment
start:
mov ax,data
mov ds,ax
cld
mov cx,5h
mov bx,5h
lea si,str
add si,5
mov di,5000h
l1:mov bx,[si]
mov [di],bx
dec si
inc di
loop l1
hlt
code ends
end
当我访问位置 5000 时,我得到一个绝对垃圾值。请帮助谢谢
【问题讨论】:
-
你怎么知道位置 5000 有什么?
-
每个字符为 1 个字节,但您正在处理 2 个字节。 PS:学习使用调试器。
-
@Jester 我如何处理 1 个字节?那我应该用 AL 代替 AX 吗?
-
你甚至不使用
AX,你使用的是BX。是的,你应该使用BL(例如)。 -
我想知道您是否自己进行过任何类型的搜索或研究。此问题在过去两天内至少发布了五次。