当前位置: 代码迷 >> 汇编语言 >> 显示入口有关问题求大哥们指教。
  详细解决方案

显示入口有关问题求大哥们指教。

热度:8936   发布时间:2013-02-26 00:00:00.0
显示入口问题求大哥们指教。。。
code segment
  assume cs:code, ds:code
begin:
;----使文本显示模式扩展为全屏----
  mov ax,12h
  INT 10H ;置图形模式
  mov ax, 3
  INT 10H ;置文本模式
;-----设置数据段、扩展段初值------
  mov bx, cs
  mov ds, bx
  mov es, bx
;-----从显示字库A处替换为“长春大学”字模-----
  lea bp, buffer ;取字模首址
  mov dx, 41h ;从显示字库A处替换
  mov cx, 8 ;换8个字
  mov bx, 1000h
  mov ax, 1100h ;装入用户字体
  int 10h
;-------扩展段值指向显存地址-------
 mov ax,0b800h
 mov es,ax
;------ 显示指针指向左上角 ------
 mov dx,0 ;显示指针指向左上角
 next:
 cld ;正序显示
 mov di,dx ;
 lea si,string ;指向串首
 mov ah,07 ;字色为白
 mov cx,10 ;10个字符
he:lodsb ;取一字
  stosw ;存入显存
  loop he ;显示下一字
;-------------------------------
  mov ah,1
  int 16h ;有按键按下吗?
  jz new
  mov ah,0
  int 16h ;取其键值
  cmp al,0dh ;是回车吗?
 jz exit
new:
 call delay
 add dx,2 ;后移一个位置(2/-2)
num:
 cmp dx,0 ;已到最左边了吗?
 jz kkk
 cmp dx,140 ;已到最右边了吗?
 jnz it
kkk:
  neg byte ptr cs:[num-1] ;2/-2互换
it: jmp next ;在新位置重新显示
 exit:
  mov ah,4ch
  int 21h ;返回DOS

DELAY PROC  
push dx
push cx
push ax
mov cx,10
@t:
  mov dx,3dah
ta: in al,dx
  test al,8
  jnz ta
tb: in al,dx
  test al,8
  jz tb
loop @t
pop ax
pop cx
pop dx
ret
DELAY ENDP
 
string db ' ABCDEFGH '
;------以下为长春大学 16X16 字模点阵数据-----------
buffer db 5 dup(8), 9, 8, 0FFh, 2 dup(9), 3 dup(8)
db 9, 0Eh, 8, 0, 10h, 30h, 40h, 80h, 0, 4
db 0FEh, 2 dup(0), 80h, 40h, 20h, 1Ch, 8
db 0, 1, 7Fh, 1, 3Fh, 2, 0FFh, 4, 8, 1Fh
db 28h, 0C8h, 0Fh, 2 dup(8), 0Fh, 8, 0, 0FCh
db 0, 0F8h, 0, 0FEh, 40h, 20h, 0F0h, 2Eh
db 24h, 0E0h, 2 dup(20h), 0E0h, 20h, 5 dup(1)
db 0FFh, 1, 3 dup(2), 2 dup(4), 8, 10h, 60h
db 5 dup(0), 4, 0FEh, 0, 2 dup(80h), 2 dup(40h)
db 20h, 10h, 0Eh, 4, 0, 22h, 2 dup(11h)
db 0, 7Fh, 40h, 80h, 1Fh, 0, 1, 0FFh, 3 dup(1)
db 5, 2, 2 dup(8), 10h, 20h, 0FEh, 2, 4
db 0E0h, 40h, 84h, 0FEh, 6 dup(0)
;****************
 code ends
 end begin

大哥们谁能告诉我下mov ax, 1100h。。。中的1100H是什么得出来的。还有mov ax,0b800h
。。是怎么算出来的。。。

------解决方案--------------------------------------------------------
mov ax, 1100h ;装入用户字体
int 10h

;这个调用提供的功能是设置与获取MCGA或VGA+上的字符生成属性。这里,AH=11,表示的是字符生成功能,AL=00,表示转入用户字体。BH=每个字符的字节数(1-12),BL=字节页,CX=要装入的字体字符数,DX=表中的字符号(0-255),ES:BP=字体表的首地址。这些都是dos调用手册里所解释的。

mov ax,0b800h;这个值表示的是显存地址,也是固定的
  相关解决方案