我有以下汇编代码。我在DS
中声明了两个数组。稍后在代码中我将BX
移动到我想要访问的数组元素的索引号。 PRINT_CHAR
进程只是通过串口发送AL
中的数据以显示在屏幕上。但由于某种原因,我似乎无法访问数组元素。它只是给了我一些虚假的价值。
print_char
进程绝对没问题。我已经尝试了两种我知道的方法来访问数组。任何帮助,将不胜感激。谢谢!
DATA_SEG SEGMENT
ARRAY DB '1','2','3','1','2','3','4','5','6','4','5','6'
bottom2 DB '7','8','9','7','8','9','*','0','#','*','0','#'
DATA_SEG ENDS
topnumbers:
cmp BX, 12
jge bottom_numbers
MOV AL,DS:ARRAY[BX] ; Stores character in AL (?)
jmp NUMBERS
bottom_numbers:
sub BL, 12d
LEA SI, bottom2
ADD SI, BX
MOV AL, [SI]
NUMBERS:
XOR AH, AH
CALL FAR PTR PRINT_CHAR
答案 0 :(得分:1)
如果要创建.exe文件,则负责将段寄存器设置为相应的值。像(但检查你的秘密汇编语法):
mov ax, DATA_SEG
mov ds, ax
此外,对于这样的小程序.COM可执行格式更容易处理,因为DOS将为您设置所有段寄存器,您将永远不需要使用远指针。