汇编实验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不久,求真相...哈哈!
编译器可能将C这个字符做了别的用途。。所以段名最好不要用c。 编译器问题吧!因为我这里masm 6.0没有问题 编译器问题。。。其他版本的没事。。。
还有,小甲鱼老湿……:L 最好不要用单个字母作为段名,有些编译器过不了 风扫地 发表于 2011-12-21 14:31 static/image/common/back.gif
编译器可能将C这个字符做了别的用途。。所以段名最好不要用c。
masm5.0就不会报错,开始以为是书错了呢,额。。 游戏人生 发表于 2011-12-21 21:29 static/image/common/back.gif
最好不要用单个字母作为段名,有些编译器过不了
恩,了解了,我用两个masm不同版本的比较了一下,呵呵 D.调dē哗丽 发表于 2011-12-21 20:04 static/image/common/back.gif
编译器问题。。。其他版本的没事。。。
还有,小甲鱼老湿……
恩,了解了,嘿嘿,老湿是用来调侃的,哈哈 回答的都差不过,我也自己实践过了,分就给第一个人吧,就一个鱼币而已,主要是目前我太穷了,哈哈 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-30 23:46 static/image/common/back.gif
masm6.1以上的编译器c不能做段名吧,我做这个实验刚不久,代码如下不知有没有错。
assume cs:code
aseg ...
恩,masm5.0就不会出错,开始以为是书错了呢,呵呵,原来是自己见识的少 @景天@ 发表于 2011-12-31 00:05 static/image/common/back.gif
恩,masm5.0就不会出错,开始以为是书错了呢,呵呵,原来是自己见识的少
我开始也纠结了几天呢
页:
[1]