Assembly 从光标读取字符
我正在汇编一个视频应用程序。我使用此代码进入视频模式Assembly 从光标读取字符,assembly,Assembly,我正在汇编一个视频应用程序。我使用此代码进入视频模式 mov ah,0 mov al,13h int 10h 然后我用打印来写(因为我用的是emu8086) 然后我试着读取dh中的字符,1 dl,1应该是矩阵中的字符 与 但是我得到的是al=00在sub-al之前,'0'和al=D0h在这行之后,它应该是4或5,这取决于矩阵 我做错了什么?或者我不能在这个视频模式下获取字符吗?那么,您似乎正在选择模式13h,我认为是320x200x8bpp?BIOS getchar例程仅在文本模式
mov ah,0
mov al,13h
int 10h
然后我用打印来写(因为我用的是emu8086)
然后我试着读取dh中的字符,1 dl,1应该是矩阵中的字符
与
但是我得到的是al=00
在sub-al之前,'0'
和al=D0h
在这行之后,它应该是4或5,这取决于矩阵
我做错了什么?或者我不能在这个视频模式下获取字符吗?那么,您似乎正在选择模式13h,我认为是320x200x8bpp?BIOS getchar例程仅在文本模式下运行。它们不包含将像素从图形模式映射回字符的逻辑。你必须自己写。什么处理器?你在使用操作系统吗?@RedX操作系统声称使用emu8086。这说明了一切@user2934142绕过BIOS并使用自定义视频驱动程序如何?默认情况下,视频内存从
0B8000h
开始。为80x25文本模式编写驱动程序非常简单。还请注意,从屏幕(这是一个输出设备)读取字符实际上很少有意义。您可以通过将字符存储在数组中来跟踪您自己写入屏幕的字符。我不知道13h模式下的文本分辨率是什么样的,但即使字符是8x8像素,也只需要跟踪1000字节(如果您还需要每个字符的颜色,可能需要加倍)。文本模式下的屏幕内存从0B8000h开始,但13h模式(图形)从0a000h开始<代码>[bp]默认为[ss:bp]
。我不知道这是否是一个“问题”。。。
mov ah,02h
mov dh,1
mov dl,1
int 10h
mov ax,0h
mov ax,[bp]
mov ah,0
call print_num
mov ah,02h
mov dh,1
mov dl,1
int 10h
mov ah,08h
int 10h
sub al,'0'