小博 发表于 2012-1-8 21:18:34

027_[BX]和loop指令05 视频代码的改写问题

源代码如下assume cs:xx
xx segment

xiaobo: mov ax,0ffffh
        mov ds,ax
        mov bx,0
        mov dx,0
        mov cx,12

s:        mov al,
        mov ah,0
        add dx,ax
        inc bx
        loop s

        mov ax,4c00h
        int 21h

xx ends
end xiaobo如上bx是从0加到12的

我突然就想到从12减到0然后相加.

顺便也简化下代码

可是问题来了

代码如下assume cs:xx
xx segment

xiaobo: mov ax,0ffffh
        mov ds,ax
        mov dx,0
        mov cx,12

s:        mov al,
        mov ah,0
        add dx,ax
        loop s

        mov ax,4c00h
        int 21h

xx ends
end xiaobo编译时提示第九行代码错误
错误为error a2031:
具体没给出为什么出错
求解

Zero_One 发表于 2012-1-9 11:07:55

我也是刚学,也才刚过这一章,好像只有 【BX】才可以作为偏移地址CX不可以,,,错了请高手指点

Zero_One 发表于 2012-1-9 11:28:06

assume cs:xx

xx segment


xiaobo: mov ax,0ffffh

      mov ds,ax

      mov bx,12

      mov dx,0

      mov cx,12


s:      mov al,

      mov ah,0

      add dx,ax

      sub bx,1

      loop s


      mov ax,4c00h

      int 21h


xx ends

end xiaobo


这样也算减法吧

Zero_One 发表于 2012-1-9 12:01:12

本帖最后由 Zero_One 于 2012-1-9 12:07 编辑

assume cs:xx
xx segment

xiaobo: mov ax,0ffffh
      mov ds,ax
      mov bx,12
      mov dx,0
      mov cx,12
s:   mov al,
      mov ah,0
      add dx,ax
      sub bx,1
      loop s
      mov ax,4c00h
      int 21h
xx ends
end xiaobo

小博 发表于 2012-1-9 13:46:20

Zero_One 发表于 2012-1-9 12:01 static/image/common/back.gif


主要昨天看了一个人的写法assume cs:codesg

codesg segment

start:
                mov ax,0
                mov cx,100
      s:
                add ax,cx
                loop s
               
                mov ah,4ch
                mov al,00h
                int 21h
codesg ends
end start所以我就像用CX代替``.
既然CX不能做偏移地址
那估计就不可以了吧

Zero_One 发表于 2012-1-9 13:54:54

我也看到了,特别是12句和13句,:Q差点绕进去,不过才知道可以这么写

seuer126 发表于 2012-1-9 14:19:33

CX一般是作为循环多少次, 没就见过作为偏移地址的。

小博 发表于 2012-1-9 14:34:46

                mov ah,4ch

                mov al,00h

ax=4c00h不是一样么- -
页: [1]
查看完整版本: 027_[BX]和loop指令05 视频代码的改写问题