@景天@ 发表于 2011-12-21 14:09:01

汇编实验5第五题,求真相!

第(5)题原题分了几个段,什么a段,b段,c段,可编译的时候就提示有c的一行错误(编译器是masm615),于是把c换成什么d或者m什么乱七八糟的东西都可以,这难道是像c语言里那样还有关键字吗,有的话是什么意思呢。

还有发现一个比较有意思的事情,并没有采用小甲鱼老湿给的提示,而是在a,b段里的数据相加时,同时用了3个段寄存器,ds,es,ss。代码如下:
assume cs:code,ds:a
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
m segment
      db 0,0,0,0,0,0,0,0
m ends
code segment
start:
      mov ax,a
      mov ds,ax
      mov ax,b
      mov es,ax
      mov ax,m
      mov ss,ax
      mov cx,8
      s:mov ax,ds:
      add ax,es:
      mov ss:,ax
      inc bx
      loop s
      mov ax,4c00h
      int 21h
code ends
end start
也能正常通过,结果也正确,这就好比cx和loop指令相关,但不用loop的时候,cx也可以用来做些其他事情,所以这里我把和栈相关的ss段用做他用,简化了一下,算是一种分享吧,高手勿笑,菜鸟路过,有什么错误或者不好的地方可以告诉我哦,嘿嘿~

不过第一个问题谁能告诉我呢,本人刚进鱼c不久,求真相...哈哈!

风扫地 发表于 2011-12-21 14:09:02

编译器可能将C这个字符做了别的用途。。所以段名最好不要用c。

小熊猫party 发表于 2011-12-21 19:23:30

编译器问题吧!因为我这里masm 6.0没有问题

D.调dē哗丽 发表于 2011-12-21 20:04:31

编译器问题。。。其他版本的没事。。。

还有,小甲鱼老湿……:L

游戏人生 发表于 2011-12-21 21:29:32

最好不要用单个字母作为段名,有些编译器过不了

@景天@ 发表于 2011-12-22 22:02:39

风扫地 发表于 2011-12-21 14:31 static/image/common/back.gif
编译器可能将C这个字符做了别的用途。。所以段名最好不要用c。

masm5.0就不会报错,开始以为是书错了呢,额。。

@景天@ 发表于 2011-12-22 22:03:19

游戏人生 发表于 2011-12-21 21:29 static/image/common/back.gif
最好不要用单个字母作为段名,有些编译器过不了

恩,了解了,我用两个masm不同版本的比较了一下,呵呵

@景天@ 发表于 2011-12-22 22:03:57

D.调dē哗丽 发表于 2011-12-21 20:04 static/image/common/back.gif
编译器问题。。。其他版本的没事。。。

还有,小甲鱼老湿……

恩,了解了,嘿嘿,老湿是用来调侃的,哈哈

@景天@ 发表于 2011-12-22 22:05:05

回答的都差不过,我也自己实践过了,分就给第一个人吧,就一个鱼币而已,主要是目前我太穷了,哈哈

赵璐 发表于 2011-12-30 23:46:42

masm6.1以上的编译器c不能做段名吧,我做这个实验刚不久,代码如下不知有没有错。
assume cs:code
asegment
db 1,2,3,4,5,6,7,8
aends

bsegment
db 1,2,3,4,5,6,7,8
bends

casegment
db 0,0,0,0,0,0,0,0
caends

code segment
start:mov ax,a
      mov ds,ax
      mov ax,ca
      mov es,ax
      mov bx,0
      mov cx,8

s:      mov dl,
      mov es:,dl
      inc bx
      loop s

      mov ax,b
      mov ds,ax
      mov bx,0
      mov cx,8
z:      mov dl,
      add es:,dl
      inc bx
      loop z

      mov ax,4c00h
      int 21h
code    ends
end   start

@景天@ 发表于 2011-12-31 00:05:50

赵璐 发表于 2011-12-30 23:46 static/image/common/back.gif
masm6.1以上的编译器c不能做段名吧,我做这个实验刚不久,代码如下不知有没有错。
assume cs:code
aseg ...

恩,masm5.0就不会出错,开始以为是书错了呢,呵呵,原来是自己见识的少

赵璐 发表于 2011-12-31 01:31:27

@景天@ 发表于 2011-12-31 00:05 static/image/common/back.gif
恩,masm5.0就不会出错,开始以为是书错了呢,呵呵,原来是自己见识的少

我开始也纠结了几天呢
页: [1]
查看完整版本: 汇编实验5第五题,求真相!