鱼C论坛

 找回密码
 立即注册
查看: 1467|回复: 3

在王爽第7章,更灵活定位内存地址中, 代码编译完成后运行程序出现错误提示框

[复制链接]
发表于 2014-4-24 16:03:05 | 显示全部楼层 |阅读模式

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

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

x


题目要求是,将数据段(4行4列,每行16个字节,每行前2个为空格)每行的前4个字母改成大写  
程序源代码如下:
assume ds:datasg,cs:codesg,ss:stacksg

datasg segment
        db '  myloveis      '
        db '  young         '
        db '  andyou        '
        db '  jingjing      '
datasg ends

stacksg segment
        dw 0,0,0,0,0,0,0,0
stacksg ends

codesg segment
    start:mov ax,stacksg
              mov ss,ax
                  mov sp,16
                  
                  mov ax,codesg
                  mov ds,ax
                  mov bx,0
                  mov cx,4
          s1: push cx
              mov si,3
                  mov cx,4
          s2: mov al,[bx+si]
              and al,11011111b
                  mov [bx+si],al
                  inc si
                  loop s2
                  
                  add bx,16
                  pop cx
                  loop s1
                  
                  mov ax,4c00h
                  int 21h
       
codesg ends
end start

但编译完成后运行exe程序出现错误提示框,图如下:
u.PNG
经多次检查调试以及在网上查找资料都没有找出问题所在,希望大家能帮忙看下


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

使用道具 举报

发表于 2014-4-24 16:33:52 | 显示全部楼层
在提示的地址上遇到一个不合法的指令,debug到那里看看是什么指令出错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-24 17:48:55 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-24 17:49:50 | 显示全部楼层
刚我debug了一下,发现一个奇怪的地方就是,当外层循环第3次执行到 pop cx 之后 ,此时 cx 里的值是 2,本来下跳指令时 loop  s1  ,判断cx 是否等于0 ,但事件上是 ret XXXX ,  他执行完这条指令之后,就吧ip改成了一个很大的数,不知道是跳到哪里去了, 而此时后面的代码是一样的了,我只能帮你到这里了,这个问题我反正是不知道是什么原因,下面是图 你自己看看,或者你也debug 一下

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 02:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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