+ -
当前位置:首页 → 问答吧 → 几个汇编问题,跪求大虾告知

几个汇编问题,跪求大虾告知

时间:2010-12-07

来源:互联网

先看看一段汇编程序吧

编程:在屏幕中间显示80 个“!”
assume cs:code
code segment
  start:mov ax,0b800h
  mov es,ax
  mov di,160*12

  move bx,offset s-offset se
  mov cx,80
s:mov byte ptr es:[di],'!'
  add di,2
  int 7ch
se:nop

  mov ax,4c00h
  int 21h

code ends
end start
对于这个汇编程序,我有以下疑惑:
1.start段中0b800h是什么意思,我见好多程序都有它
2.mov byte ptr es:[di]中,ptr是什么意思,[ ]代表什么意思,:又代表什么意思,为什么汇编程序中要用到[ ]和:
3.大虾能具体和我讲讲这个程序吗?

作者: HANYUAN1   发布时间: 2010-12-07

1.0b800h表示显存的物理地址
2.es:[di]表示寄存器间接寻址,:加es表示添加段前缀说明,如果不加则默认在ds中。
3.不就先定位好显存位置,然后循环写入显存地址中嘛。

你问这几个问题,说明你对基本的寻址方式以及显存读写原理不太熟悉。王爽的书介绍的相当详细了。建议去认真看看吧。

作者: paullbm   发布时间: 2010-12-07