鱼C论坛

 找回密码
 立即注册
查看: 3000|回复: 7

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

[复制链接]
发表于 2012-1-8 21:18:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
源代码如下
  1. assume cs:xx
  2. xx segment

  3. xiaobo: mov ax,0ffffh
  4.         mov ds,ax
  5.         mov bx,0
  6.         mov dx,0
  7.         mov cx,12

  8. s:        mov al,[bx]
  9.         mov ah,0
  10.         add dx,ax
  11.         inc bx
  12.         loop s

  13.         mov ax,4c00h
  14.         int 21h

  15. xx ends
  16. end xiaobo
复制代码
如上bx是从0加到12的

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

顺便也简化下代码

可是问题来了

代码如下
  1. assume cs:xx
  2. xx segment

  3. xiaobo: mov ax,0ffffh
  4.         mov ds,ax
  5.         mov dx,0
  6.         mov cx,12

  7. s:        mov al,[cx]
  8.         mov ah,0
  9.         add dx,ax
  10.         loop s

  11.         mov ax,4c00h
  12.         int 21h

  13. xx ends
  14. end xiaobo
复制代码
编译时提示第九行代码错误
错误为error a2031:
具体没给出为什么出错
求解
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-9 11:07:55 | 显示全部楼层
我也是刚学,也才刚过这一章,好像  只有 【BX】才可以作为偏移地址  CX不可以,,,错了请高手指点
小甲鱼最新课程 -> https://ilovefishc.com
发表于 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,[bx]

        mov ah,0

        add dx,ax

        sub bx,1

        loop s


        mov ax,4c00h

        int 21h


xx ends

end xiaobo


这样也算减法吧
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-9 12:01:12 | 显示全部楼层
本帖最后由 Zero_One 于 2012-1-9 12:07 编辑
  1. assume cs:xx
  2. xx segment

  3. xiaobo: mov ax,0ffffh
  4.         mov ds,ax
  5.         mov bx,12
  6.         mov dx,0
  7.         mov cx,12
  8. s:     mov al,[bx]
  9.         mov ah,0
  10.         add dx,ax
  11.         sub bx,1
  12.         loop s
  13.         mov ax,4c00h
  14.         int 21h
  15. xx ends
  16. end xiaobo
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-1-9 13:46:20 | 显示全部楼层

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

  2. codesg segment

  3. start:
  4.                 mov ax,0
  5.                 mov cx,100
  6.         s:
  7.                 add ax,cx
  8.                 loop s
  9.                
  10.                 mov ah,4ch
  11.                 mov al,00h
  12.                 int 21h
  13. codesg ends
  14. end start
复制代码
所以我就像用CX代替``.
既然CX不能做偏移地址
那估计就不可以了吧
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-9 13:54:54 | 显示全部楼层
我也看到了,特别是12句和13句,:Q差点绕进去,不过才知道可以这么写
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-9 14:19:33 | 显示全部楼层
CX一般是作为循环多少次, 没就见过作为偏移地址的。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-1-9 14:34:46 | 显示全部楼层
                mov ah,4ch

                mov al,00h

ax=4c00h不是一样么- -
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-13 19:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表