Assembly 从字符数组打印项目?
我需要从如下字符数组打印单个字符:Assembly 从字符数组打印项目?,assembly,x86,x86-16,Assembly,X86,X86 16,我需要从如下字符数组打印单个字符: string DB 'ABC0','$' 我知道这样做可以打印整个字符串: lea dx, string mov ah, 0Ah int 21h 如何使用BIOS仅打印单个字符,例如“A”?: 使用DOS: 您需要使用int 21H/AH=02H mov dl, byte ptr[string] mov ah, 02h int 21h byte ptr表示希望从变量/指针中提取一个字节。要打印下一个字母,只需增加指针: inc
string DB 'ABC0','$'
我知道这样做可以打印整个字符串:
lea dx, string
mov ah, 0Ah
int 21h
如何使用BIOS仅打印单个字符,例如“A”?:
使用DOS:
您需要使用int 21H/AH=02H
mov dl, byte ptr[string]
mov ah, 02h
int 21h
byte ptr
表示希望从变量/指针中提取一个字节。要打印下一个字母,只需增加指针:
inc string
你通常必须声明:incw[string]这类东西如果你想要一个单独的字母,你有两个问题需要解决。DX只有起始指针,它指向“A”,因此需要将指针向前调整到所需的字母。其次,您的打印函数mov-ah,INT21h只会从指向的字母盲目打印到$terminator,因此您需要一个INT21命令来打印单个字符(通常加载到AL中)
mov-ah,0Ah
/int-21h
是缓冲输入,上次我检查过,不会打印任何内容。我怀疑原来的帖子有错。@Frank,是的,它行得通,为什么不行?如果string
/a
的起始地址是100,那么b
是101对吗?因此,inc字符串
会增加地址。在一个循环中,它在DosBox和Emu386中打印得很好。。。我会说,它将“A”增加到“B”——相同的结果——但不会增加地址。我不太熟悉Masm/Tasm语法。
mov dl, byte ptr[string]
mov ah, 02h
int 21h
inc string