专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 汇编语言

关于loop循环解决方案

发布时间:2010-06-14 15:11:09 文章来源:www.iduyao.cn 采编人员:星星草
关于loop循环
是王爽的汇编语言113面的一道题目
向内存0:200-0:23f中依次传入数据0-63(3fh)

以下是我的两种写法

assume cs:code
code segment
        mov ax,20h
        mov ds,ax
        mov cx,63 
mov bx,0
      s:mov ds:[bx],bx
        inc bx
loop s

        mov ax,4c00h
        int 21h
code ends
end

        



assume cs:code
code segment
        mov ax,20h
        mov ds,ax
        mov cx,63  
      s:mov bx,cx
mov ds:[bx],bx
  loop s

        mov ax,4c00h
        int 21h
code ends
end

        

大家编译运行下试试 我不知道是不是我机器的问题 第二种有问题
每次loop一次 之前写入的数据就变成0了
------解决方案--------------------
=.= 你每次都是bx减一了,然后呢bx从63开始~高位写的00,低位为63,然后再次bx为0062了,然后高位的00把上次位置写的63覆盖了,
------解决方案--------------------
mov ds:[bx],bx 改成 mov ds:[bx],bl

------解决方案--------------------
引用:
=.= 你每次都是bx减一了,然后呢bx从63开始~高位写的00,低位为63,然后再次bx为0062了,然后高位的00把上次位置写的63覆盖了,

用这个原因该如何去解释第一种写法呢?
引用:
mov ds:[bx],bx 改成 mov ds:[bx],bl

正解! 这是改正方法!

------解决方案--------------------
就是操作数类型没有搞清楚,对于初学者,建议再用个8位的寄存器装载要存入的数据,这样做更清楚。
assume cs:code
code segment
        mov ax,20h
        mov ds,ax
        mov cx,63 
    mov bx,0
       mov al,0
      s:mov ds:[bx],al
        inc al
        inc bx
    loop s

        mov ax,4c00h
        int 21h
code ends
end


assume cs:code
code segment
        mov ax,20h
        mov ds,ax
        mov cx,63
        mov al,63  
      s:mov bx,al
        mov ds:[bx],al
        dec al
        loop s

        mov ax,4c00h
        int 21h
code ends
end
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: