收稿日期:2009-11-20
*陈丹辽宁工程技术大学职业技术学院讲师(辽宁,阜新123000)。
for (i=2;i<=n觹n;i++)邀if ((i-1)%n==0)h=h+1;
else h =(h -1)<1芽h -1+n:h -1,l =(l +1)>n芽l+1-n:l+1;a[h][l]=i;妖
fp=fopen
(″mofangzhen.txt″,″a″);for (h=1;h<=n;h++)邀for (l=1;l<=n;l++)fprintf (fp ,″%8d″,a[h][l]);fprintf (fp ,″%c″,'\n');妖fclose
(fp );妖(2)接收文件。接收文件为程序同目录下的文本文件mofangzhen.txt ,当n=5时获得的魔方阵如下:17241815235714164613202210121921311
18
25
2
9
1.3用fprintf ()函数实现汉诺塔问题操作步骤的收集1.3.1汉诺塔
一块板上有三根针:A ,B ,C 。A 针上套有64个大小不等的圆盘,大的在
下,小的在上。要把这64个圆盘从A 针移动到C 针上,每次只能移动一个圆盘,移动可以借助B 针进行。但在任何时候,任何针上的圆盘都必须保持大盘在下,小盘在上。求移动的步骤。例如当初始状态有三个盘子时,
移动步骤如下:
①A-->C ;②A -->B ;③C-->B ;④A -->C ;⑤B-->A ;⑥B-->C ;⑦A -->C 。
1.3.2解决汉诺塔问题的算法
用递归算法:若有一个盘子,只需将盘子从A 针移到C 针,否则若有n (>1)个盘子,则先把A 上面n-1个盘
子借助C 针移到B 针,再把A 上第n 个盘子直接移到C 针,最后将B 针上的n-1个盘子借助A 针移到C 针。1.3.3解决汉诺塔问题的程序及步骤接收文件
(1)程序清单
#include <stdio.h>void main ()邀int n;
void hanoi (char,char,char,int );
scanf (″%d″,&n );hanoi
('A','B','C',n );妖void hanoi (char a,char b,char c,int n )邀FILE 觹fp;
fp=fopen (″hanoi.txt″,″a″);if (n==1)
fprintf (fp,″%-3c--->%3c\n″,a,c );else
邀hanoi (a,c,b,n -1);hanoi (a,b,c,1);hanoi (b,a,c,n-1);妖妖
(2)步骤接收文件。接收文件为程序同目录下的文本文件hanoi.txt ,多盘状态步骤过多,此处不再列举。
2结束语
本文对文件标准写入函数fprintf ()进行了介绍并结合实例应用,获得了重要程序结果的接收方法,较好地方便了C 程序的应用。
参考文献
[1]游祖元,唐明灯.C 程序设计教程[M].
湖南:湖南教育出版社,2008-05.[2]龙佑喜,彭三城.C 语言程序设计教程(第二版)[M].湖南:湖南教育出版
社,2005-10.
·123·
汇编语言是一种面向机器的语言,其特点是运行速度快,占用存储空间小,可直接对硬件进行控制,在一些实时控制的场合,有着不可替代的作用。然而汇编语言也有它的不足,如编写及调试程序相对高级语言程序要困难、复杂,尤其在进行数据处理、数值混合运算时更是如此。
作为一种高级语言,C 语言毫无疑问是杰出的,其功能丰富,表达能力强,使用灵活,开发效率高,因而比汇编语言
使用更为广泛。
通常在软件开发过程中,大部分程序采用高级语言编写,以提高程序的开发效率;但在要求执行速度快、占用空间少、或要求直接控制硬件的场合,则利用汇编语言编写,以提高程序的运行效率。因此在实际开发和软件编制过程中,常常需要使用多种语言混合编程,充分利用各种语言的优势,使开发和编程工作达到事半功倍的效果。
汇编语言和C 语言混合编程,需要解决两个主要问题:
2010年2月
第1期
电脑学习
要:讲述了混合编程的必要性及应用场合,介绍了编程中汇编语言和C 语言各自应遵循的法则,通过实例对上述内容进行
关键词:中图分类号:TP312文献标识码:A汇编语言转c语言的软件
文章编号:1002-2422(2010)01-0123-03
Combined Programming of the Assembler and C Programme
Chen Dan
Abstract :
The paper describes in detail the necessity of the combined programme,presents their respective rules of the combi-
Keyword:了充实与完善,显示了混合编程在软件开发中的实际用途。
C 语言与汇编语言混合编程
ned program in C language and in the assembler.Finally,through filling and perfecting the examples with the aboved 陈
丹*
C 语言
汇编语言混合编程content,the examples also shows the practical use of combined program in software development.
C Language Assembly Language Combined Program
......................................................................................................................................
一是汇编与C程序模块的连接,二是函数调用过程中参数的传递。
1C模块调用汇编模块
C模块调用汇编模块示例:
/觹文件名:CMIN.C C调用汇编过程示例:asmp()显示字符数组a[].b[]的值,并返回X增1的值觹/
#include<stdio.h>
char b[]=″数组B传送给asmp()$″;
cxtcrn int asmp邀char觹;int妖;
main()
邀char a[]=″数组A传送给asmp()″;
int Y=100;
X=asmp邀a,x妖;
printf邀″\n X一%d/n″,X妖;妖
;文件名ASMP.ASM
;供C调用的汇编子程序过程
STACK SEGMENT PARA STACK'STACK'
DW100DUP(0)
STACK ENDS
DATA SEGMENT WORD PUBLIC'DATA'
DATA ENDS
DGROUP GROUP DATA,STACK
EXTRN b:NEAR;C模块中全局变量名
PUBLIC asmp
TEXT SEGMENT BYTE PUBLIC'CODE'
ASSUME CS;TE:YT,DS:DGROUP,RS:DGROUP,SS:DGROUP
asmp PROC
PUSH BP
MOV BP,SP
PUSH SI
PUSH DI
MOV SI,WURD PTR[BP+4妖;取第一参数值
MOV DI.WORD PTR[BP+6〕;取第二参数值
PUSH DI
PUSH SI
LEA AX,B;取数组B首址
MOV DX,AX
MOV AX,0900H
INT21H;DOS功能调用显示字符串B
POP DX
MOV AX,0900H
INT21H;DOS功能凋用显示字符串A
POP AY
INC AX;函数返回值
POP DI
POP ST
POP BP
RET
asmp ENDS
TEXT ENDS
END
2汇编模块调用C模块/觹文件名:CBYASNI由汇编调用的C函数示例:cproc(),由汇编程序调用并返回数组S的首址觹/
#include<stdio.h>
char觹cproc邀char觹print x妖
邀char s[]″c字符串:″
printf(″%s x=%d\n″,p,x);
returns);妖
文件名:ACALLC.ASM汇编调用的C函数示例。
TEXT SEGMENT AYTE PUBLIC'CODE'
TEXT ENDS
STACK SEGMENT PARA STACK'STACK'
DB512DUP(芽)
STACK ENDS
DATA SEGMENT WORD PUBLIC'DATA'
VAL DW1234
MSG DB'汇编调用的C函数示例',10,0
DATA ENDS
BSS SEGMENT WORD PUBLIC'BSS'
BSS ENDS
BSSEND SEGMENT BYTE PUBLIC'BSSEND'
BSSEND ENDS
DGAOUP GROUP-DATA,BSS,ASSEND,STACK
ASSUME CS;TEXT,DS:DGROUP,SS:DGROUP
EXTRN CPROC:NEAR;C函数名
EXTRN CDECL:near
TEXT SEGMENT
PUSH ES
MOV AX,DGROUP
MOV DS,AX
MOV ES,AX
LEA BX,VAL
MOV AX[BX];取VAL值送AX
PUSH AX;做为cpro()的第二参数压栈
LEA AX,MSG;取MSG首址送AX
PUSH AX;做为cpro()的第一参数压栈
CALL cproc;调用C函数
ADD SP,9;调整栈顶指针,弃去压入参数
MOV DX,AX;取cproc()返回值(数组s首址)
MOV AX,0900H;
INT21H;DOS功能调用,显示字符串
POP ES
POP DS
MOV AX,9COOH
INT21H;返回DOS
STARTX ENDP
TEXT ENDS
END STARTX
进行混合编程时,一个任务往往被分为若干功能模块,每个模块以函数的形式存在,根据每一模块的特点选用适合的语言独立编程,然后使用相应的语言编译系统对其进行编译形成目标文件,最后将多个目标文件连接在一起形成一个完整的可执行文件。
·124·
参考文献
[1]潭浩强.程序设计(第二版)[M].北京:清华大学出版社,2004.[2]钱晓捷.汇编语言程序设计(第二版)[M].北京:电子工业出版社,
2003.[3]李伯成.微机原理及应用[M].西安:西安电子科技大学出版社,2002.
[4]李芳.单片微型计算机与接口技术(第二版)[M].北京:电子
工业出版社,
2005.收稿日期:2009-12-09
*黄俊杰河南理工大学机械与动力工程学院讲师(河南,焦作454003)。
·
125·
铰链四杆机构中,若四个杆的长度不满足杆长条件[1]
(最长杆与最短杆之和大于其余两杆之和),那么以四个杆中的任一杆作为机架,此铰链四杆机构都为双摇杆机构;若满足杆长条件,如果最短杆为连杆,此时铰链四杆机构也为双摇杆机构。在双摇杆机构中,摇杆摆角大小的计算没有曲柄摇杆机构[2]那么容易求出,而是一个比较复杂的问题。有的文献是从摇杆极限摆角计算公式方面来计算其摆角[3],但这些方法计算量大,不直观。本文是用Pro/e [4]将双摇杆机构进行实体建模,然后使用Pro/e 所带的测量工具进行测量可方便求出其摆角大小。
1摆角的计算
1.1实体建模
已知机架l AD =20mm ,原动件l AB =25mm ,连杆l BC =45mm ,从动件l CD =35mm ,由于四个杆的长度不满足杆长条件l AD +l BC =65mm>l AB +l CD =60mm ,因此该铰链四杆机构为双摇杆机构,其实体结构模型如图1所示。
1.2运动仿真
定义一个伺服电动机,根据要求选择合适参数,则原动件AB 就可以在一定范围内运动,从而通过连杆BC 带动从动件摇杆CD 就能够在一定范围内摆动。1.3摆角的计算
当原动件摇杆AB 以顺(逆)时针的速度转动时,从动件摇杆CD 也以顺(逆)时针方向转动,为了便于测量角度,把实体模型图变换个观测方位。则摇杆的两个极限位置分别如图2、图3所示。
在图2和图3中,可以看到两条线间的夹角分别用蓝线表示出来,其角度的大小在图中右侧下方的结果中给出了具体的数值,但这个数值并不是摇杆摆角的大小,但其摆角只需简单计算便可得到,其摆角 =(360°-52.0804°)-
(180°-81.1353°)=209.0549°。
2结束语
2010年2月
第1期
电脑学习
要:为直观方便地求出双摇杆机构的摆角,用Pro/e 对双摇杆机构进行实体建模,然后使用Pro/e 所带的测量工具进行角度
关键词:中图分类号:TP319
文献标识码:A
文章编号:1002-2422(2010)01-0125-02
Application of Pro /Engineering in the Double Rocker Mechanism
Huang Junjie
Zhang Yuanshou
Xu Xingxin
Abstract :
In order to intuitively and easily calculate the tilt angle of the double-rocker mechanism,the solid modeling of the
Keyword:测量可简便求出其摆角大小。此方法具有通用性,可用于曲柄摇杆机构以及铰链四杆机构演变得到的其他机构,而且Pro /e 在双摇杆机构中的应用
kage hinge,but also provides the basis for motion and dynamic analysis of the mechanism.
黄俊杰*
张元寿许幸新
为这些机构的运动分析和动力分析提供了基础。
double rocker mechanism is built using Pro /e.The tilt angle is simply computed by the measure tools with Pro /e.The method is not only generic and applicable to crank rocker mechanism,as well as the evolution of four-bar lin-双摇杆机构摆角Pro/e
图1双摇杆机构实体结构模型
.....................................................................................................................................
图2一个极限位置图
Double Rocker Mechanism Tilt Angel Pro /e

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。