【发布时间】:2016-10-26 21:13:09
【问题描述】:
我必须编写一个程序,使用 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] 指令
我该怎么做?
【问题讨论】:
-
技术上,忽略阵列业务。它只是一块内存。您只需要知道数组从哪里开始以及它有多长 - 然后将这两个位置之间的所有字节复制到新的位置。
标签: linux assembly x86 nasm addressing-mode