. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验九可编译,就是只能显示一行!求高手指正  [待解决] 回复[ 3次 ]   点击[ 236次 ]  
kudou
[帖 主]   [ 发表时间:2011-02-07 14:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-02-01 22:18
assume cs:code,ds:data,ss:stack
data segment
  db 'welcome to masm!'
  db 2h,24h,1h
data ends
stack segment
  db 64 dup (0)
stack ends

code segment
start: 
   mov ax,stack 
   mov ss,ax 
   mov sp,64 ;定义栈段
   mov cx,3  ;循环3次
   mov bx,0
   mov ax,0b86eh
   
   mov si,40h
   mov di,10h   ;找出显存中的行列
  
 s1:
     push cx
     
     mov es,ax
     mov ax,data
     mov ds,ax 
     mov ah,[di]
     mov cx,16
     inc di
     
 s:  mov al,[bx]
     mov es:[si],ax
     inc bx
     add si,2
 loop s
     pop cx
     add ax,0a0h
 loop s1
        
     mov ax,4c00h
     int 21h

code ends
end start
kudou
[第1楼]   [ 回复时间:2011-02-07 14:59 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-02-01 22:18
补充:可以编译出exe文件。但是在单步调试过程中会在其中某一步自动退出
masmaster
[第2楼]   [ 回复时间:2011-02-07 23:40 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
按照楼主的思路修改的,测试通过。

assume cs:code,ds:data

data segment 
  db 'welcome to masm!' 
  db 2h,24h,1h 
data ends 

code segment 
start:  
;定义数据段和附加段最后在程序开始的时候
        mov ax,data
        mov ds,ax
        mov ax,0b800h
        mov es,ax

   mov cx,3  
   mov bx,0 
    
   mov di,160*12+40*2 ;显存地址
   mov si,10h         ;字符属性地址
   
 s1:         push di       ;暂存显存地址
             push cx       ;计数器入栈保存
        push bx       ;字符首地址入栈

     mov ah,[si]      
     mov cx,16 
      
 s:  mov al,[bx] 
     mov es:[di],ax 
     inc bx 
     add di,2 
 loop s 
        pop bx            ;恢复字符首地址
     pop cx         ;恢复计数器
        pop di      ;恢复显存地址
     add di,0a0h    ;显存地址指向下一行
        inc si      ;指向下一个字符属性
 loop s1 
         
     mov ax,4c00h 
     int 21h 

code ends 
end start
masmaster
[第3楼]   [ 回复时间:2011-02-07 23:41 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
栈段可以不要。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved