鱼C论坛

 找回密码
 立即注册
查看: 1936|回复: 9

关于王爽老师书第160页实验6第二小题自已写了代码却报错了请大家帮忙看看

[复制链接]
发表于 2012-11-29 13:02:50 | 显示全部楼层 |阅读模式
4鱼币
下面是自己写的代码其中有两处报错了,报错的代码是mov al,[bx+3+si]和mov [bx+3+si],al
而这两处改为mov al,[bx+3][si]和mov [bx+3][si],al却不会报错。请大家帮忙看看为什么会出错了



assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
   dw 0,0,0,0,0,0,0,0   ;定义一个8个字单元
stacksg ends

datasg segment
   db '1. display       '
   db '2. brows        '
   db '3. replace      '
   db '4. modify      '
datasg ends

codesg segment
start: mov ax,stacksg
         mov ss,ax
         mov sp,10h     ;设置栈顶,指向ss:10h
        mov dx,datasg
        mov ds,dx
        mov bx,0
        mov cx,4       ;设置外循环次数4次
  
s0:     push cx        ;将cx的值压入栈中
         mov si,0
         mov cx,4       ;设置内循环次数
s:      mov al,[bx+3+si]
        and al,11011111b  ;将小写字母变为大写字母
        mov [bx+3+si],al
        inc si
        loop s
  
       mov bx,0
       add bx,16      
       pop cx            ;从栈中取出的值送入cx中
       loop s0
  
      mov ax,4c00h
      int 21h
  
     codesg ends
    end start  

最佳答案

查看完整内容

把mov al, 改成mov al,就行了 至于为什么可能就是编译器的问题吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-11-29 13:02:51 | 显示全部楼层
把mov al,[bx+3+si] 改成mov al,[bx+si+3]就行了  至于为什么可能就是编译器的问题吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-11-30 13:35:40 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-11-30 14:34:06 | 显示全部楼层
写成3h就不报错了,代表16进制。另外你s循环后面的"mov bx,0"是不是多余的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-1 09:16:55 | 显示全部楼层
也许就是这个原因吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-1 09:17:42 | 显示全部楼层
wawa 发表于 2012-11-30 16:22
把mov al, 改成mov al,就行了  至于为什么可能就是编译器的问题吧

也许就是这个原因吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-1 09:27:27 | 显示全部楼层
这本书到那里书呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-1 09:30:23 | 显示全部楼层
ycg 发表于 2012-11-30 14:34
写成3h就不报错了,代表16进制。另外你s循环后面的"mov bx,0"是不是多余的

:D我试看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-1 09:33:10 | 显示全部楼层
ycg 发表于 2012-11-30 14:34
写成3h就不报错了,代表16进制。另外你s循环后面的"mov bx,0"是不是多余的

试过了没有用,还是报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-1 09:41:34 | 显示全部楼层
ycg 发表于 2012-11-30 14:34
写成3h就不报错了,代表16进制。另外你s循环后面的"mov bx,0"是不是多余的

:L汗看过了我那S下面的 mov bx,0不仅多余还错了只能寻到第二行的地址,下面的行数就寻不到了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-26 23:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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