gpt4 book ai didi

assembly - 如何在 x86 程序集中将字符从一个内存位置复制到另一个内存位置?

转载 作者:行者123 更新时间:2023-12-04 00:47:04 25 4
gpt4 key购买 nike

<分区>

我正在尝试使用 16 位汇编复制一个字符串。

我(除其他外)在 .dirBafer 中有 16 个 11 个字符的字符串,我想将每个字符串复制到 .ime_dat 中,以便我可以打印它并稍后处理它(处理代码尚未编写) .每个字符串的第一个字符由 32 个字节的数据分隔。 .dirbafer 基本上是 FAT12 目录的转储,我正在尝试打印文件名。

我有以下代码:

mov dx, .dirBafer ;loads address of .dirBafer in dx
mov cx, 16 ;16 entries in a dir
.load_dir:

push cx
mov ax, dx ;loads address of .dirBafer from dx into ax
mov bx, .ime_dat ;buffer for storing file names
mov cx, 11 ;each file name is 11 characters long
.ime_dat_str:
push dx ; push dx, since it's being used as a temporary register
mov dx, [ax] ;this is supposed to load first char from location pointed byax to dx
mov [bx], dx ;this is supposed to load the first char from location pointed by dx to bx

add ax, 1 ; moving on to the next character
add bx, 1 ;moving on to the next character

pop dx ; we pop the dx so that the original value returns
loop .ime_dat_str ;this should loop for every character in the file name


mov si, bx ;preparing to print the file name
call _print_string ; printing the name
add dx, 32 ; we move to the next dir entry
pop cx ; popping cx so that the outer look counter can be updated
loop .load_dir

.dirBafer times 512 db 0
.ime_dat times 12 db 0

我的问题是那一行:

mov dx, [ax] 生成无效有效地址错误。

我做错了什么,我该如何解决?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com