发布时间:2023-11-28 18:09来源:www.sf1369.com作者:宇宇
#include stdlib.h //头文件
#include stdio.h
typedef int datatype; //定义结构体
typedef struct node
{
datatype data;
struct node *next;
}linklist;
linklist *head,*s,*r; //链式对象指针
linklist *creatlist() //建立链式表
{
int x;
linklist *head,*s;
head=NULL; //把第一个数据设为空
printf(please enter your number is:);
scanf(%d,&x);
while(x!=-1) //当你输入-1后此循环结束
{
s=(linklist*)malloc(sizeof(linklist));
s->data=x; //把输入的数据依次送给指针
s->next=head;
head=s;
scanf(%d,&x);
}
return head; //反回为头指针
}
void print(linklist *head) //设置找印函数
{
linklist *r=head->next;
printf(the number is:);
printf(%d ,*head);
while(r!=NULL)
{
printf(%d ,r->data);
r=r->next;
}
printf(\n);
}
void main()
{
linklist *C07511head;
C07511head=creatlist();
print(C07511head);
}
无论什么语言(包括C语言)最终都要被编译成2进制的机器码,但不是汇编。
你所谓的汇编只不过是在人阅读机器码的时候的一种显示方式,否则你总不能分析Exe文件的时候显示一串串的2进制或16进制的数字吧,那样太复杂了。
之所以要用汇编语言的方式来表示机器码是因为汇编与机器码之间可以互相对应。如果你有好的反编译器甚至可以把Exe文件反成C语言,到时候你可能会问:
“XX语言不是可以直接操作硬件吗 那为什么还要编译成C语言啊 ”
反正操作硬件与你用什么语言是没有直接联系的,只不过是方便不方便的问题。
并且在Windows里直接操作硬件是被禁止的,因为你的程序是运行在操作系统里的一个附属程序(暂且这么说吧),它每次对硬件的访问都会被操作系统甄别,如果不允许的话要么访问失败,要么出非法指令之类的错误。
在VC程序里嵌入汇编指令(也就是明确的机器码)的方式是:
__asm
{
pushad
....
....
....
popad
}
我知道:
1)从0200H单元开始有100个数,编一个程序检查这些数,正数保持不变,负数取补后送回,要求程序框图和完整程序及每条指令的解释。
(直接从0398HI单取消,然后进入POUJN脚本,改485这个值就可以了)
2)已知数组A和数组B分别包含50和20个互不相等的带符号数(16位)编程将在A中但不在B中出现的数存入数组C中。要求同上。
(直接把A用C0998H这个值改为20和50之间)
3)在首地址为TABLE的数组中存放着200个16位带符号数,以补码表示,找出最大最小数,出现次数最多数及该数出现的次数,依次存放于以RESULT开始的单元内。要求同上。
(把RESUL用POUJN脚本改成TABLE,然后存取,不能出现2个偶数学,最后把00100这个函数给删除了)
以上就基本是这样了,看不懂没关系,关键是互相学习。
从初级语言到高级语言。。。。
汇编语言就是把机器码用一些简直代号代替罢了,看你的提问,应该是想知道,如何用汇编语言来写一个工程了.通常,一个汇编语言都有数据段.Data,可以利用Ram定义自己想要的变量,还有就是代码段,用.code来定义开始,堆栈段通常是芯片定义的,一般无需用户定义,堆栈段用户尽量不要使用,汇编还支持宏定义,伪汇编等.汇编编译一般是编译,链接就可以生成最终文件.
书写顺序
数据段定义DSEG
堆栈段定义SSEG
代码段定义CSEG
附加段定义
其中 代码段是程序主体 有很强的逻辑结构 SSEG DSEG是物理存储 就是数据在内存中的位置
汇编语言是直接对CPU说话的 也就是直接对CPU进行操作 一般的汇编语言都是基于某种CPU的 多数为80X86的 因为规范利于教学