汇编语言显示缓存区的内容怎么显示

就是那个实验9 汇编语言(王爽)第二版的
怎么用屏幕显示呢

首先你要知道,当你把字符对应的ASCII码写入显示缓冲区的时候它就会被屏幕所显示出来。
显示缓冲区一共有8页(这里只用第一页就够了,所以我就提一下)
每页的可以存储2000个字,一个字的高位存放的是需要显示的字符,低位存放的是字符的颜色
也就是说一页最多显示2000个字符了 比如说 0位:41,1位:02 这里41所在的位是0位(偶数位)所以它将被转换成对应的字符显示在屏幕上 而紧跟0位后面的是奇数位(1位),它里面的内容会转换成控制0位字符和背景等颜色信息,以后的都是这样,比如第2位和第3位配对,第4位和第5位配对,第4位是字符信息,第5位就是控制第4位字符信息的颜色。
而每行可以放80个字,也就是80个字符(字符位+颜色位=160个字节),而每页又可以显示25行
我们可以用 行数*160=内存中相对于行数所在的地址(因为一行是160个字节,所以乘以160)
我们可以用 列数*2=内存中相对于列数所在的地址 (因为每行用2个字节分别存放字符和颜色)
如果说用SI存放行数,DI存放列数,而你需要在屏幕的第13行40列显示数据的时候,它的偏移地址就是:si*160+di*2(这个是字符存放的位置),如果你要设置颜色的话 只要向后面偏移一位就可以了:si*160+di*2+1
说了这么多,我来写个具体的给你看看吧,不会的看我写的备注
需要向屏幕的 13行40列显示字符X,颜色为(黑底绿色)
assume cs:code
code segment
start:
mov bx,0b800h
mov es,bx ;用ES段存放显示缓冲区
mov bx,13*160+40*2 ;在编译的时候编译器会帮你计算出显示的偏移地址
mov es:[bx],'X' ;在显示缓冲区的内存中写入字符'X'的ascii码
mov es:[bx+1],2h ;这里向后移一位,控制‘X’的颜色

mov ax,4c00h
int 21h
code ends
end start
回答完毕 QQ544980123 一起交流
温馨提示:内容为网友见解,仅供参考
无其他回答

汇编语言怎样将内存中的数据在屏幕上以十六进制形式显示出来
本程序运行的结果,是显示:3A4F。

汇编语言怎样在屏幕显示一个图像?
(1)内存中的 0xb8000 开始为显示缓冲区,往里面写入 ASCII 字符可以在屏幕上显示。格式为:ASCII 一字节,属性一字节。(2)使用 int 0x10 中断,可以在屏幕上显示文字。这是显示文字的方法,如果要显示图像,需要先用 int 0x10 中断改变屏幕显示模式,然后可以在指定地方写入像素属性,以达到显示的...

汇编语言中单个字符存入缓冲区怎么写
1、首先在汇编语言需要定义一个变量作为缓冲区,用于存储单个字符。2、然后使用MOV指令将单个字符存入缓冲区。3、最后使用其他指令来检查缓冲区的内容,例如使用MOV指令将缓冲区的内容移动到某个寄存器中,然后使用PRINT指令将内容输出到屏幕上。

汇编语言用dos显示字符串出现这样的情况
或者偷懒的话直接将段地址弄成B800,显示缓冲区的结构每一个字代表一个字符,这个字的低字节是字符的ASCII编码,高位字节是显示的色彩属性,如果你将一堆字符送人缓冲区,将显示属性的部分也当作字符,那么出来的结果就是你现在看到的,

用汇编语言定义一个缓冲区后,键盘输入一个由20个字符组成的字符串,如何...
每显示四个字符,就显示一次:13、10。这两个分别是《回车》、《换行》的ASCII码。 ---缓冲区的起始偏移地址为66H,那么,66H、67H、68H、69H中,应有数据的第0~第3字节。想把0DH放入第四个字节中,MOV [X],0DH ,X该为 BUF + 4。即:MOV [BUF + 4], 0DH。 本回答由提问者推荐 举报| 答案纠错 |...

汇编语言怎样将内存中的数据在屏幕上以十进制形式显示出来
mov ax,num ;取内存数到AX call show ;显示十进制形式 mov ah,7 ;暂停 int 21h MOV AX,4C00H ;退出程序 INT 21H show:xor cx,cx mov bx,10 nx1:xor dx,dx div bx or dx,0e30h inc cx push dx cmp ax,0 jnz nx1 nx2: pop ax int 10h loop nx2 ret CODES ENDS END START ...

请教大虾汇编语言如何实现在屏幕上显示程序运行结果?
为80x25彩色字符模式显示缓冲区,你向里面写入数据,就会立即显示在显示器上 这个缓冲区显示分8页,每页4KB 偏移000~09F对应显示器第一行(80个字符160个字节)一个字符两个字节(高位字节显示属性,比如颜色;底字节是字符)当然,你也可以调用系统函数,也可以直接对显卡进行操作 ...

as86汇编语言写的,直接写VGA缓存映射 ,怎么什么都不显示呢?
mov ds, ax ;恢复 ds值 ret 直接写视频缓冲区,在左上角显示一个白底红字大写A debug里可以直接运行 一个字符,两个字节,高位字节的低四位是前景色,高四位是背景色,低位字节是字符ASCII码 背景要高亮显示 要调用 int 10h 的一个功能开启高亮,不然会是背景闪烁 ...

试用汇编语言编写一个程序,把存放在BX寄存器内的值(二进制数)用十六进...
START: MOV AX,DATA MOV DS,AX MOV BX,1111110111100001B MOV CH,4 ;循环四次 LOP: MOV CL,4 ROL BX,CL ;每次循环环左移四位 MOV DX,BX AND DL,0FH ;每次取低四位,来表示一个十六进数 ADD DL,30H ;转化成为ASSIC码 CMP DL,3AH ;判断DL是否大于10的ASSIC码(A+30H...

汇编语言DOS操作系统中显示内存数据,默认的段地址能不能修改
可以修改段地址,如下图所示:楼主贴的截图显示的数值,46h 是“F”的ASCII码,74h 是 ”t“ 的ASCII码,所以右边显示 Ft 其余单元的数值,不在ASCII码范围内,所以显示点。

相似回答