gpt4 book ai didi

linux - 如何在 Linux 的 nasm x86 程序集中复制数组,移植 16 位 DOS 代码?

转载 作者:太空宇宙 更新时间:2023-11-04 04:58:23 25 4
gpt4 key购买 nike

我必须编写一个程序,使用 x86 汇编器将数组复制到其他数组中

原始代码是在 MSDOS 的 TASM 中为 8086 处理器编写的,但我想将其移植到使用 i386 处理器的 Linux NASM

TASM中的代码是这样的:

.MODEL SMALL

.DATA

TABLE_A DB 10, 5, 1
TABLE_B DB 0, 0, 0

.CODE

MOV AX, SEG TABLE_B
MOV DS, AX

MOV SI, 0

LOOP:
MOV AL, TABLE_A[SI]
MOV TABLE_B[SI], AL

INC SI
CMP SI, 2
JBE LOOP


MOV AH, 4Ch
INT 21h

END

我试图在 nasm 中重写它,但我无法坐在正确的数组位置,类似于 TABLE_A[SI] 指令

我该怎么做?

最佳答案

nasm中的最终代码是这样的

section .text
global _start
cpu 386

_开始:

MOV ESI, TABLE_A
MOV EDI, TABLE_B
MOV CX, 3

COPY_LOOP:
MOV AL, [ESI]
MOV [EDI], AL

INC SI
INC DI
LOOP COPY_LOOP

MOV AX,1
INT 80h

section .data
TABLE_A DB 10, 5, 1
TABLE_B DB 0, 0, 0

关于linux - 如何在 Linux 的 nasm x86 程序集中复制数组,移植 16 位 DOS 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40272218/

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