. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  分享我做的实验9,附带注释,大家多指教  [待解决] 回复[ 2次 ]   点击[ 378次 ]  
a88510
[帖 主]   [ 发表时间:2011-03-18 11:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-26 21:21
assume cs:code,ds:data,ss:stack

data segment

        db 'welcome to masm!'

data ends

stack segment

        db 0,0,0,0,0,0,0,0,0,0,0,0,0,0
stack ends

code segment
;该代码主要是把data的字符串弄上显示缓冲区里,写在中间,要三行,还要不同颜色之类的
start:mov ax,data
      mov ds,ax
      
      mov ax,0B800h  ;显示缓冲区25*80
      mov es,ax

      mov ax,stack
      mov ss,ax
      mov sp,14
      
      mov bp,06e0h  ;屏幕中间三行首行地址,bp负责对三行字符进行逐行使用
      mov cx,3      ;三行的循环次数
    ;压入第三行的属性白底蓝色
      mov  ax,71h
      push ax

    ;压入第二行的属性绿地红色
      mov  ax,24h
      push ax
 
      mov  ax,02h ;第一行需要的属性绿色数据
   s0:push cx     ;.....压入不解释
      push ax     ;压入
      mov si,0     ;si对显示缓冲区使用
      mov bx,0     ;bx对数据区那串字符使用
      mov cx,16
      
      pop ax
      mov ah,al  ;ah存储字符属性


    s:
      mov al,[bx]                
      mov es:[bp+si+64],al     ;显示器中间偏左开始写
      mov es:[bp+si+65],ah  
      
      inc bx   
      add si,2
      loop s
      
      pop cx 
      pop ax      ;这个有点难解释,我也琢磨了很长时间,就是必须让cx排在第二位以至于让可以使S0循环下去
      add bp,160  ;所以先pop出来,让cx在so处push进去,再push ax,具体看程序心算一下流程,或者画个栈图
      loop s0

      MOV AH,1  ;这段上网查到的,exe第一次看得到,第二次一闪而过,又是什么非使用中,所以就百度了下。
      INT 21H  
      mov ax,4c00h
      int 21h        


code ends

end start


开始栈图如下:

第一行属性
---------

     cx                
---------

第二行属性
---------

第三行属性
----------


之后的自己对着这个图想,想不明白就画




PS:ah的用法是临时想到的,因为本来想push al的,结果发现只能push十六位存储器,杯具啊= =
a88510
[第1楼]   [ 回复时间:2011-03-18 11:14 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-26 21:21
栈图往下压= =
a88510
[第2楼]   [ 回复时间:2011-03-18 11:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-26 21:21
。。。。。杯具了,一看别人的,发现自己的太复杂了
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved