如何创建一个接收角色的子程序并将其打印到屏幕上。在TASM中

时间:2018-02-01 07:43:50

标签: assembly x86 dos tasm

我是程序集中的完全初学者,我想创建一个子程序,它将从调用程序接收一个字符,然后在当前光标位置显示该字符。然后将光标更新到下一个屏幕位置。有没有办法获取光标的坐标,有没有办法在光标的坐标处打印字符。另外如何将光标更新到下一个屏幕位置?

.MODEL SMALL
.STACK 64
.DATA


.CODE

begin:

mov ah, 2
mov bh, 1
mov dh, 12
mov dl, 40
int 10h

END begin

我想尝试将光标放在中间,但是我放的代码不会将光标放在中间。我想把它放在中间因为我认为这类似于将光标更新到下一个屏幕位置的方式,只有你在x坐标上添加一个。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

由于此问题似乎已得到解决,因此我将评论移至答案中,以便可以关闭此问题。

int 10h有许多功能,包括允许您读/写光标位置以及输出字符的功能。鉴于OP的原始代码使用int 10h(可能是有原因),这似乎是最好的方法。

正如Ped7g所提到的,也有DOS中断也可能适合您的需求。如果性能至关重要,还有一些方法可以直接写入比dos / bios中断更快的视频内存,但这可能比当前项目所需的更复杂。

注意:许多int 10h服务都使用bh来指定页码。

当视频显示设置为文本模式(即没有图形)时,有足够的视频内存来支持多个文本页面。虽然一次只能显示1页,但您可以准备其中一个"其他"页面,然后使用ah=05h快速翻到新页面。这是一种不常见的用法。对于大多数人来说,页面始终设置为0.