arrays - 在程序集中打印数组元素

标签 arrays assembly emu8086

我是 assembly 新手,我正在使用 emu8086

我试图打印一个数组的两个元素,但我无法打印第二个元素

这是我的代码:

.MODEL SMALL

.STACK 100H  

.DATA 
MSG DB 'HI','GOOD$'

.CODE 

MAIN PROC

MOV AX,@DATA
MOV DS,AX
 
MOV AH,2
MOV DL,MSG
INT 21H  

MOV AH,2
MOV DL,MSG+1
INT 21H 

MOV AH,4CH
INT 21H

MAIN ENDP

END MAIN

在输出时打印 hi,不打印 good。请纠正我如何打印第二个元素。

最佳答案

如果你只想打印“HIGOOD”,那么写:

MOV AH,2
MOV DL,MSG
INT 21H  
MOV DL,MSG+1
INT 21H
MOV DL,MSG+2
INT 21H  
MOV DL,MSG+3
INT 21H
MOV DL,MSG+4
INT 21H  
MOV DL,MSG+5
INT 21H

更好的方法是用“$”终止两个字符串,例如 MSG DB 'HI$','GOOD$',然后使用字符串输出函数 09h:

MSG DB 'HI$','GOOD$'
...
mov ah, 09h
mov dx, offset MSG
int 21h
mov dx, offset MSG+3
int 21h

更好的方法是为您的字符串分配单独的标签:

MSG1 DB 'HI$'
MSG2 DB 'GOOD$'
...
mov ah, 09h
mov dx, offset MSG1
int 21h
mov dx, offset MSG2
int 21h

关于arrays - 在程序集中打印数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37384321/

相关文章:

assembly - 在 assembly 中使用鼠标在屏幕上绘制 (emu8086)

assembly - 使用 AVX-512 或 AVX-2 对大数据进行 1 位计数(总体计数)

C 源代码、Watcom 编译器和 EMU8086

java - For(each) 循环两次填充组合框

javascript - 使用部分字符串循环数组

assembly - 是否可以直接从格式良好的 AST 生成汇编代码而不转换为 IR?

c - GCC 保存带有额外信息的临时输出

intel - 将十六进制数组转换为十进制数英特尔 8086 汇编语言

javascript - 如果数组中不存在索引,则在索引位置创建元素

java - 在二维数组中生成唯一的行和列