宋末 发表于 2012-7-27 17:39:30

王爽汇编实验10的问题,帮下忙谢谢。

第八行第三列的显存地址是怎么算出来的,知道得朋友,教一下谢谢。

敉沧 发表于 2012-7-27 21:43:46

这个。8*160+6
8行,乘内行字节数,加上每列字符和字符属性。

宋末 发表于 2012-7-27 22:28:55

敉沧 发表于 2012-7-27 21:43 static/image/common/back.gif
这个。8*160+6
8行,乘内行字节数,加上每列字符和字符属性。

可是我这样算出来的和别人不同,好像也不是乘8,是乘7吧。。。

敉沧 发表于 2012-7-27 22:35:20

那是因为。计算机是从0开始数的,而人类正常习惯是从1开始数。所以要行数减一

宋末 发表于 2012-7-27 23:14:43

敉沧 发表于 2012-7-27 22:35 static/image/common/back.gif
那是因为。计算机是从0开始数的,而人类正常习惯是从1开始数。所以要行数减一

王爽汇编实验10看到了吧!他们的答案显存地址都是B8000,这地址好像没有变。

宋末 发表于 2012-7-27 23:15:22

敉沧 发表于 2012-7-27 22:35 static/image/common/back.gif
那是因为。计算机是从0开始数的,而人类正常习惯是从1开始数。所以要行数减一

不是第八行第3列,而是显存起始地址。

敉沧 发表于 2012-7-28 08:20:56

实验9,在188页。已经说了。显存的空间中,B8000H~BFFFFH 共32KB的空间。

那么,0B800h就是段地址咯。
关于行列,可以计算出来放到其他寻址寄存器中。譬如bx。

假如第13刚第36列为要送入字符的起始地址,那么就可以这样,
mov bx,0b800h
mov es,bx
mov bx,13*160+72

假如送入字符'1'
就可以这样


先设置字符属性
mov ah,07h   ;黑底白字
mov al,'1'       ;或者31h也可以,一样的。

现在送入显存。
mov es:,ax

这样就可以咯。

三田学校 发表于 2012-7-29 15:26:14

一行有160个字节。
页: [1]
查看完整版本: 王爽汇编实验10的问题,帮下忙谢谢。