鱼C论坛

 找回密码
 立即注册
查看: 1720|回复: 4

实验5.5,程序这样写可以吗?---新人可以一看解决方法有详细al,ax,add bx2,inc bx讲解

[复制链接]
发表于 2015-8-7 08:51:28 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 axix005 于 2015-8-9 14:07 编辑

实验5 编写、调试具有多个段的程序

(5)程序如下,编写code段中代码,将a段和b段中的数据依次相加,将结果存到C段中。


assume cs:code

a segment
        db 1,2,3,4,5,6,7,8
a ends

b segment
        db 1,2,3,4,5,6,7,8
b ends

c segment
        db 0,0,0,0,0,0,0,0
c ends

code segment

start:mov ax,a
      mov ds,ax
      mov ax,b
      mov ss,ax
      mov ax,c
      mov es,ax
      mov bx,0

      mov cx,8
s:mov ax,ds:[bx]
  add ax,ss:[bx]
  add es:[bx],ax
      inc bx
loop s
      

      mov ax,4c00h
      int 21h
code ends

end start


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

使用道具 举报

发表于 2015-8-7 14:52:11 From FishC Mobile | 显示全部楼层
我跟你的思路是一样的不过好像不行的样子,同求高手前辈指教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-7 22:37:10 | 显示全部楼层
七煞 发表于 2015-8-7 14:52
我跟你的思路是一样的不过好像不行的样子,同求高手前辈指教

怎么不行??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-9 13:50:45 | 显示全部楼层
用 MASM 5.0 编译一下,即可显示有错无错。

千万别用 MASM 6.0 以上的版本。

追问:
今天 02:29 masm能生成程序,就是不知道这样能不能达到问题目的

追答:
今天 10:50 S:
    MOV   AX, DS:[BX]----AX ?应该用 AL。
    ADD   AX, SS:[BX]
    ADD   ES:[BX], AX----用 MOV 更符合题意。
    INC   BX
    LOOP  S

程序结构正确。

只是,参加运算的,应该是字节,不是字。
那么,程序的 AX,可改为 AL。

追问:
26 分钟前 ADD   ES:[BX], AX----用 MOV 更符合题意。--------明白了。把相加的结果移动到c段,是我没认真看题,哈哈谢谢指出

为什么ax不能参加运算???

a段和b段中的数据依次相加。。里面的是两个字节不是一个字吗?

呵呵,新人不明白麻烦大哥讲解了!!!!

追答:
11 分钟前 在 A 段、B 段,你所定义的数字,都是字节。

程序中,就应该用字节(如 AL),进行计算。
--------------------
你要是用 DW 定义,这就是字,才应该用 AX 计算加法。
此时,INC  BX,应该改为:ADD  BX, 2。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-8-12 14:56:10 | 显示全部楼层
原来如此多谢指教,自己又张姿势了{:1_1:}
看不清楚题目成了自己的老毛病了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 20:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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