Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 使用8086上的TASM将ASCII符号写入汇编中的视频存储器_Memory_Video_Assembly_X86 16_Tasm - Fatal编程技术网

Memory 使用8086上的TASM将ASCII符号写入汇编中的视频存储器

Memory 使用8086上的TASM将ASCII符号写入汇编中的视频存储器,memory,video,assembly,x86-16,tasm,Memory,Video,Assembly,X86 16,Tasm,我需要写一个将ASCII符号写入视频存储器的程序 .model tiny .stack .data .code main: mov ax, 0b800h mov ds, ax mov aL, 'x' mov es, bx mov es:[1], aL mov ah, 4ch int 21h end main 到目前为止,该代码尚未生效;它编译、运行然后退出,不打印任何内容。 我想我漏了一行。要能够写入视频内存,请将ES设置为0b800h 在屏幕上指定要写入的位置(偏移)。将DI设置为

我需要写一个将ASCII符号写入视频存储器的程序

.model tiny
.stack
.data
.code
main: 

mov ax, 0b800h
mov ds, ax

mov aL, 'x'
mov es, bx
mov es:[1], aL

mov ah, 4ch
int 21h

end main
到目前为止,该代码尚未生效;它编译、运行然后退出,不打印任何内容。
我想我漏了一行。

要能够写入视频内存,请将ES设置为0b800h 在屏幕上指定要写入的位置(偏移)。将DI设置为(行*(最大行(80))+col)*2(行和col基于空)。例如,要写入第10行中的第三个字符,请使用“mov di,(2*80+9)*2” 指定AH中的颜色。将AH设置为(backgroundcolor*16+foregroundcolor),例如,在黑色(0)背景上书写浅灰色(7)字母,请使用“mov AH,7”
使用STOSW指令而不是“mov es:[adress]”。这样,您可以动态写入屏幕上的不同位置。

可能重复您将
ds
设置为
0b800h
,并将
es
设置为未定义值或至少不
0b800h
bx
)。然后你用
es
来处理视频内存,这显然是失败的。太棒了,我太傻了。但是,我仍然无法以这种方式打印字符,程序的行为与以前一样。ASCII代码的偏移量无效(
es:[1]
)(奇数偏移量用于颜色和属性),并且您没有定义颜色(嗯,您的颜色和属性字节是
0x78
,即
x
)。请看我的答案。@user-屏幕上的每个位置由两个字节组成,一个保存字符代码,另一个保存颜色。如果不同时设置这两个选项,可能会在黑色背景上出现一个黑色字符。很难读!