. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验9,debug通过,大家一起指正  [待解决] 回复[ 5次 ]   点击[ 218次 ]  
jiafangbai
[帖 主]   [ 发表时间:2010-12-10 09:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-29 23:22
assume cs:code,ss:stack,ds:data
  data segment
    db 'welcome to masm!'
    db 02h,24h,71h     ;三种属性
  data ends

  stack segment
    db 16 dup (0)
  stack ends

  code segment
  start: mov ax,stack
         mov ss,ax
         mov sp,16

         mov ax,data
         mov ds,ax

         mov ax,8000h
         mov es,ax      ;显存段地址

         mov bx,0
         mov si,16      ;属性数据地址
         mov di,0b80h      ;显存第一个字节位置
         mov cx,3

     s0: push cx
         mov cx,16
      s: mov ax,[bx]
         mov es:[di],ax      ;一个字节数据
         mov ax,[si]
         mov es:[di+1],ax  ;一个字节属性
         inc bx               ;下一个数据
         add di,2             ;下一个数据显存
         loop s
         inc si         ;下一个属性
         add di,160       ;下一行显存
         pop cx
         loop s0

         mov ax,4c00h
         int 21h
   code ends
end start
masmaster
[第1楼]   [ 回复时间:2010-12-10 10:30 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
①  mov ax,8000h;这句应为mov ax,0b800h吧
②  我测试结果,第一行正确, 第二行,第三行错位,而且显示乱字符。
jiafangbai
[第2楼]   [ 回复时间:2010-12-10 15:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-29 23:22
谢谢指点,正在改正中
jiafangbai
[第3楼]   [ 回复时间:2010-12-10 21:27 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-29 23:22
没注意bx的值,正面是改正的,应该没问题了

assume cs:code,ss:stack,ds:data
  data segment
    db 'welcome to masm!'
    db 02h,24h,71h
  data ends

  stack segment
    db 16 dup (0)
  stack ends

  code segment
  start: mov ax,stack
         mov ss,ax
         mov sp,16

         mov ax,data
         mov ds,ax

         mov ax,0b800h
         mov es,ax

         mov si,16
         mov di,0ae0h
         mov cx,3
         
     s0: push cx
         mov bx,0
         mov cx,16
      s: mov al,[bx]
         mov es:[di],al
         mov al,[si]
         mov es:[di+1],al
         inc bx
         add di,2
         loop s
         inc si
         add di,128
         pop cx
         loop s0

         mov ax,4c00h
         int 21h
   code ends
end start
masmaster
[第4楼]   [ 回复时间:2010-12-10 23:32 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
good,不过,那栈段是多余的, 可以不要!
jiafangbai
[第5楼]   [ 回复时间:2010-12-11 13:47 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-29 23:22
栈段多余?那难道不用栈吗?
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved