[英]how to print vertical character in assembly language
mov ax, 3 mov ah, 0 mov al, 3
这些说明应该做什么?
我猜你忘了写int 10h
来设置80x25文本视频模式吗?
程序中的基本错误(全部被Ped7g的注释所覆盖 )是,您仅将CL
寄存器初始化为循环计数器,其中loop
指令取决于整个CX
寄存器,而且您错误地对其进行了修改,因此可以将CX
用于第二个目的。
...从(0,0)到(0,10)打印'l'...
CX
的重复计数, BH
的显示页面, BL
的display属性以及DL
中的列都是不变的,因此可以放置在循环之外。 loop
指令,因为这几天的运行速度并不快。 AL
和AH
,您应该努力使用字大小的AX
寄存器通过单个操作进行操作。 BX
, CX
和DX
寄存器也是如此。 下面的代码适用于上面的代码:
ORG 256
mov ax, 0003h ;BIOS.SetVideoMode AH=00h, Mode 80x25 AL=3
int 10h
mov bx, 000Fh ;Display page BH=0, Display attribute BL=0Fh
mov cx, 1 ;Repetition count CX=1
mov dx, 0A00h ;Row DH=10, Column DL=0
print:
mov ah, 02 ;BIOS.SetCursor
int 10h
mov ax, 0900h + 'l' ;BIOS.DisplayCharacter AH=09h, Character AL='l'
int 10h
dec dh ;Go one row up
jns print ;Will stop when DH becomes -1
ret ;Back to DOS (works for a .COM program)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.