关于用C语言来描述一段小汇编语言程序
本帖最后由 JMP 于 2011-10-8 22:13 编辑首先申明我是超级大菜鸟,自从毕业后有很长一段时间没接触过程序设计了,代码可能会有些细节上的错误,高手不要拍砖,不要喷我,若有人发现错误希望能指正出来,共同学习共同进步!
用C语言描述下面的这段汇编代码
功能是将一个字符数组拷贝到留一个字符数组
汇编代码:
assumecs:codesg,ds:data
datasegment
yuantou db'welcome to masm!' (源字符数组)
mubiaodb 16 dup('0') (目标字符数组)
dataends
codesg segment
start:
movax,data
movds,ax (初始化)
lea bx,yuantou (将字符数组hy的指针赋值给寄存器BX)
lea dx,mubiao (类似于上一句)
push dx (保护dx)
movcx,10h (初始化循环次数,16进制)
s:
mov al, (取字符数组hy中的数据给寄存器AL)
mov ,al
inc bx
inc dx
loop s
pop dx (恢复dx)
mov ax,4c00h
int 21h
codesg ends
end start
C语言代码:
include <stdio.h>
int main ()
{
char * yuantou={"welcome to masm!"};
char *mubiao;
inti;
for (i=0;i<16:i++)
{
mubiao=yuantou;
}
printf ("%s\n",mubiao);
return 1;
}
{:1_1:}不错 啊,,,向你学习,, 本帖最后由 风扫地 于 2011-10-8 22:38 编辑
声明下。我也是小菜。说的不对的地方多多指点。,楼主确认C语言代码能够完成上面汇编代码的功能。
char * yuantou
这不是在声明指针数组。。?
其中youtou指向welcome to masm!
yuantou和mubiao在这里都相当于一个二维指针。
改了一下
#include <stdio.h>
int main ()
{
char *yuantou={"welcome to masm!"};
char *mubiao;
*mubiao=*yuantou;
printf ("%s\n",*mubiao);
return 1;
}
或者
#include <stdio.h>
int main ()
{
char *yuantou="welcome to masm!";
char mubiao;
inti;
for (i=0;i<16;i++)
{
mubiao=yuantou;
}
mubiao=0;
printf ("%s\n",mubiao);
return 1;
}
怎么调不通你写的C语言的程序。。。。
# include <stdio.h>
void main (void){
charyuantou= "welcome to masm! " ;
charmubiao;
inti;
for (i=0;i<16;i++)
{
mubiao=yuantou;
}
for (i=0;i<16;i++)
printf ("%c",mubiao);
printf("\n");
}
我改了一下可以调通。。 for (i=0;i<16:i++)
{
mubiao=yuantou;
}
你这个循环真拉风啊,i在变但里面没有变量在变真牛啊。!!! yk94215 发表于 2011-10-8 22:37 static/image/common/back.gif
for (i=0;i
相当于做了十六次同样的事。。
风扫地 发表于 2011-10-8 22:41 static/image/common/back.gif
相当于做了十六次同样的事。。
有意义吗? 大家别拍砖啊,jmp很乐于助人的,可能是很久没碰程序了 lovixer 发表于 2011-10-8 22:50 static/image/common/back.gif
大家别拍砖啊,jmp很乐于助人的,可能是很久没碰程序了
我也好久没碰C语言了,只是左看右看这程序有问题。不指出来误导人哦。{:5_109:} 没拍砖的说。。我们都是小菜菜。。共同学习。。 yk94215 发表于 2011-10-8 22:37 static/image/common/back.gif
for (i=0;i
for(i=0;i<16;i++)
1.首先初始化循环变量(i=0)。
2.判断i是否小于16.
若小于则先执行循环代码,然后i++,再次进行判断i<16,若还是小于则继续执行一次代码并i++,否者跳出循环。
不太明白你说的循环变量怎么没变????
JMP 发表于 2011-10-9 19:07 static/image/common/back.gif
for(i=0;i
他看错了吧,没看到你的下标?
页:
[1]