文档库 最新最全的文档下载
当前位置:文档库 › 编写一个程序将File1.text复制到File2.txt中

编写一个程序将File1.text复制到File2.txt中

编写一个程序将File1.text复制到File2.txt中
编写一个程序将File1.text复制到File2.txt中

编写一个程序将File1.text复制到File2.txt中,源文件和目标文件的名称作为命令行参数传递

import java.io.*;

public class connection {

public static void main(String[] args)throws Exception{

File file1 = new File("c:/file1.txt");

if(file1.exists()){

System.out.println(file1.getAbsoluteFile());

System.out.println(file1.getName());

}

else{

System.out.println("file1不存在");

}

File file2 = new File("c:/file2.txt");

if(file2.exists()){

System.out.println(file2.getAbsoluteFile());

System.out.println(file2.getName());

}

else{

System.out.println("file2不存在");

}

FileReader fr = new FileReader("c:/file1.txt");

BufferedReader br = new BufferedReader(fr);

FileWriter fw = new FileWriter("c:/file2.txt");

BufferedWriter bw = new BufferedWriter(fw);

String temp = br.readLine();

while(temp != null){

bw.write(temp);

bw.newLine();

System.out.println(temp);

temp = br.readLine();

}

bw.flush();

bw.close();

fw.close();

br.close();

fr.close();

} }

用delphi编写的记事本代码.

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ComCtrls, ExtCtrls, ToolWin, ImgList; type TForm1 = class(TForm MainMenu1: TMainMenu; RichEdit1: TRichEdit; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; FontDialog1: TFontDialog; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem; N11: TMenuItem; N12: TMenuItem; N13: TMenuItem; N14: TMenuItem; N15: TMenuItem; N16: TMenuItem; N17: TMenuItem; N18: TMenuItem; N19: TMenuItem; N20: TMenuItem; PopupMenu1: TPopupMenu; FindDialog1: TFindDialog; N21: TMenuItem; PrintDialog1: TPrintDialog; N22: TMenuItem; N23: TMenuItem; N24: TMenuItem; N25: TMenuItem; N26: TMenuItem; N27: TMenuItem; N28: TMenuItem; N31: TMenuItem; N32: TMenuItem; S1: TMenuItem; Timer1: TTimer; StatusBar2: TStatusBar; ToolBar1: TToolBar; ToolButton1: TToolButton; ToolButton2: TToolButton; ToolButton3: TToolButton; ToolButton4: TToolButton; ToolButton5: TToolButton; ToolButton6: TToolButton; ToolButton7: TToolButton; ToolButton8: TToolButton; ToolButton9: TToolButton; ToolButton10: TToolButton; ToolButton11: TToolButton; ToolButton12: TToolButton; ToolButton13: TToolButton; ImageList1: TImageList; procedure N2Click(Sender: TObject; procedure N3Click(Sender: TObject; procedure N7Click(Sender: TObject; procedure N8Click(Sender: TObject; procedure N9Click(Sender: TObject; procedure N14Click(Sender: TObject; procedure N21Click(Sender: TObject; procedure N16Click(Sender: TObject; procedure N17Click(Sender: TObject; procedure N18Click(Sender: TObject; procedure N12Click(Sender: TObject; procedure N20Click(Sender: TObject; procedure N6Click(Sender: TObject; procedure S1Click(Sender: TObject; procedure FindDialog1Find(Sender: TObject; procedure Timer1Timer(Sender: TObject; procedure N24Click(Sender: TObject; procedure N25Click(Sender: TObject; procedure N26Click(Sender: TObject; procedure N27Click(Sender: TObject; procedure N28Click(Sender: TObject; procedure RichEdit1MouseMove(Sender: TObject; Shift:

中间代码生成实验报告材料

一、实验目的 通过在实验二的基础上,增加中间代码生成部分,使程序能够对实验二中的识别出的赋值语句,if语句和while语句进行语义分析,生成四元式中间代码。 二、实验方法 实验程序由c语言完成,在Turboc 2.0环境中调试通过。 语义分析程序的基本做法是对文法中的每个产生式分别编写一个语义分析子程序,当程序语法部分进行推倒或规约时,就分别调用各自的语义分析程序。当语法分析结束时,语义分析也就结束了。 在本实验程序中,当语法分析部分识别出语确的句子时,就进入content函数(当语法分析识别出不正确的句子时,不进入content函数,也就是不进行语义分析),然后根据句子的类型进行分类,进入不同的语义处理部分。 对于赋值语句,关键是产生正确的处理算术表达式E的四元式。 程序中的ec函数的功能就是产生算术表达式的四元式,在ec函数中使用了两个栈idshed,opshed,分别是算术表达式的数据栈和符号栈。每次提取一个数字和一个算符,然后将算符与与栈顶算符进行优先级比较,优先级高则将单前数字和算符进栈,低或者相等的话则将当前栈顶元素进行合并,产生四元式。直至整个算术表达式结束。其中还有一些细节问题,具体的做法可以参看程序。 对于实验给定的if语句的文法格式,条件判断式C只中可能是>或者<=两种关系,不可能是布尔表达式,这样程序就简单的多了。 通过ec函数可以产生条件判断式C中的E的四元式,然后只要加上转向四元式就可以了。本实验程序中只给出真出口的转向四元式,没有给出假出口的转向四元式,这在实际中是不可以的,但在

本实验中,实际上是对每条独立的语句进行语法分析,给出假出口转向四元式实际上意义不大,而且假出口转向语句的转移目标必须要到整个语句分析结束以后才可以知道,这样就要建立栈,然后回填,这样会使程序复杂很多,所以没有加上假出口转向四元式。 对于while语句,具体的做法和if语句差不多,所不同的是当while语句结束时,要多出一条无条件转向四元式,重新转到条件判断式C的第一条四元式。当要产生无条件转向四元式时,它的转向目标C的第一条四元式已经产生了,所以具体的做起来是不太困难的。只要记下当前while中的C的第一条四元式的位置,填上就可以了。 整个程序的结束是当读入“. ”时,程序就中止。 程序中还有很多细节问题,具体的可以后面的附录:程序的完整代码。 三、测试程序 ff:=6+6*6-; if sl>89+56*67 then f:=7*7+4; ff:=6+6*6-6%4+8; if sl+78*76>89*56+67 then while a-7>98+45*45 do f:=7*7+4; . 四、运行结果 首先对测试程序进行语法分析,识别出正确的句子,当识别出正确的句子时,就对当前句子进行语义分析,而语法不正确的句子不进行语义分析。 ff:=6+6*6- Error(4):Except ID or NUM ; Error(2):Syntax error if sl>89+56*67 then f:=7*7+4; success!!! (1) [ *, 56, 67, T1 ]

20个代码生成框架

20个代码生成框架 11.1 CodeSmith http: 官方论坛: http: 版权形式:30天试用 开源:否需要先注册确认后才能下载 1.2 MyGenerator MyGenerator是又一个国外很不错的代码生成工具,有人觉得比CodeSmith 简单、好用。 所有api可以在帮助菜单中找到。 http: 官方论坛: 版权形式: 免费 开源:否 1.3 NHibernate. http: 官方论坛: 版权形式:

免费 开源:否 1.4湛蓝.Net代码生成器 http: 官方论坛: http: 版权形式: 免费 开源:否 1.5动软.NET代码自动生成器 一款人气很旺的免费C#代码生成器 http: 官方论坛: 版权形式: 免费 开源:否 1.6 CodePlus 专为sql server c#语言设计的代码生成器,功能还是很强大http: 官方论坛:

版权形式: 需要少量的注册费用 开源:否下载地址很神秘 1.7 CodeMaker http: 官方论坛: 版权形式: 免费 开源:否 https://www.wendangku.net/doc/5a2610330.html,代码生成器 可以使用本工具生成https://www.wendangku.net/doc/5a2610330.html,和C#语言的代码,以及三层架构与ORM架构代码,并且使用的ORM持久化组件是开源的,您可以在本软件的安装目录下找到它 官方论坛: 版权形式: 免费 开源:否 1.9 BMW业务模型及代码生成器 一款人气很旺的免费C#代码生成器

官方论坛: 版权形式: 免费 开源:否 1.10飞鹰CoolCoder 专门为采用nhibernate做关系对象影射架构的系统提供代码的工具,简单易用,虽然不提供源码,我们可以用反编译工具对其反编译看源码。这是个很不错的学习机会。 官方论坛: 版权形式: 免费 开源:否 1.11 AutoCoder自动代码生成器 AutoCoder自动代码生成器是一个根据模板自动生成代码的代码生成工具,根据模板的不同,可以生成任何语言(如: ASP、C#、C++BUILDER、DELPHI、JAV A、JSP、PHP、V B、https://www.wendangku.net/doc/5a2610330.html,……),不同层次结构(B/S、C/S、n-tiger……),基于不同数据库(ORACL E、MSSQL、MYSQL、

汇编语言程序设计教学大纲

《汇编语言程序设计》课程教学大纲 二、课程简介 汇编语言是计算机能够提供给用户使用的最快最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言,因而,对程序的空间和时间要求很高的场合及需要直接控制硬件的应用场合,汇编语言的应用是必不可少三、课程目标 汇编语言课程是计算机专业的一门专业选修课。通过本课程的学习,应使学 生系统地了解计算机组成原理与内部的运行机理,掌握汇编语言程序设计及相关 知识,为学习本专业后继课程和进行与硬件有关的技术工作打下良好基础。通过 上机实验,使学生受到软硬件实验的初步训练,并培养学生分析问题和解决问题 的能力。 四、教学内容及要求 第一章基础知识 1.教学内容 (1) 为什么要用汇编语言编写程序 (2) 进位计数制与不同基数的数之间的转换 (3) 二进制数和十六进制数运算 (4) 计算机中数和字符的表示 (5) 几种基本的逻辑运算 2.基本要求 了解机器指令、代码指令、机器语言、汇编指令、汇编语言、汇编语言源程 序、汇编程序、汇编等概念;掌握进位计数制与不同基数的数之间的转换及

运算;计算机中数和字符的表示;“与”、“或”、“非”、“异或”等几种基本的逻辑运算; 第二章80X86计算机组织 1.教学内容 计算机系统概述、存储器、中央处理机和外部设备。 2.基本要求 理解计算机的硬件和软件系统及其关系。掌握计算机的基本结构及总线;存储器的内容、地址及存储器的分段;中央处理机的组成、80X86系列CPU工作寄存器构成和功能,特别是段寄存器和标志寄存器;外设接口、端口和8086/8088的端口地址范围和访问方法。 第三章80X86的指令系统 1.教学内容(重点内容) IBM PC机的寻址方式、IBM PC机的指令系统。 2.基本要求 熟练掌握IBM PC机寻址方式及物理地址的计算;数据传送、算术、逻辑、串处理、控制转移和处理机控制指令六组中的所有指令的格式、操作、及影响的标志位。了解机器语言的指令组成; 第四章汇编语言程序格式 1.教学内容 汇编程序功能、伪操作、汇编语言程序格式、汇编语言程序的上机过程。 2.基本要求 掌握DEBUG程序和命令及能用DEBUG 程序调试和运行简单小程序;汇编语言上机步骤、汇编程序的功能;数据定义及存储器分配、表达式赋值“EQU”和“=”、段定义、程序开始和结束、对准、基数控制等六类伪操作;汇编语言程序格式中的名字、操作、操作数和注释等项。 第五章循环与分支程序设计 1.教学内容 程序设计的一般步骤和基本结构、循环程序设计和分支程序设计 2.基本要求 掌握汇编语言程序的编制步骤和结构化程序设计的三种基本结构;循环的设计方法和多层循环的设计;分支程序的设计方法,并能编制相应的程序。第六章子程序结构 1.教学内容 子程序的设计方法、嵌套与递归子程序、子程序举例和DOS系统功能调用

编译原理综合性实验报告-分析中间代码生成程序分析

编译原理综合性实验报告-分析中间代码生成程序分析XXXXXX计算机系综合性实验 实验报告 课程名称编译原理实验学期 XXXX 至 XXXX 学年第 X 学期学生所在系部计算机系年级 X 专业班级 XXXXXX 学生姓名 XXX 学号 XXXXXXXXXXXX 任课教师XXX 实验成绩 计算机系制 《编译原理》课程综合性实验报告 开课实验室: 年月日实验题目分析中间代码生成程序 一、实验目的 分析PL/0编译程序的总体结构、代码生成的方法和过程;具体写出一条语句的中间代码生成过程。 二、设备与环境 PC兼容机、Windows操作系统、Turbo Pascal软件等。 三、实验内容 1. 分析PL/0程序的Block子程序,理清PL/0程序结构和语句格式。画出Block 子程序的流程图,写出至少两条PL/0程序语句的语法格式。 2. 分析PL/0程序的Block子程序和Gen子程序,了解代码生成的方法和过程。 使用概要算法来描述语句的代码生成过程。 3. 自己编写一个简单的PL/0程序,能够正确通过编译,得到中间代码。列出自

己编写的源程序和编译后得到的中间代码。 4. 从中选择一个语句或表达式,写出代码生成的过程。要求从自己的源程序中 选择一条语句,结合这条语句写出语义分析和代码生成过程。在描述这个过程中,要说清楚每个功能有哪个子程序的哪条语句来完成,说清楚语句和参数的含义和功能。 四、实验结果及分析 (一)Block子程序分析 1.常量声明的分析: 常量声明部分的语法结构定义为如下形式: -> const ; -> [;] ->id = C 其中C可以是常量标识符或字符串或整数(可带符号)或实数(可带符号)。 常量声明分析程序的主要任务是: (1).扫描整个常量声明部分。 (2).为被声明的常量标识符建立符号表项。 (3).检查重复的声明。 2.变量声明部分的分析: 变量声明部分的语法结构定义为如下形式: -> var -> [;] ->:T ->id[,]

基础的汇编语言小程序

基础的汇编语言小程序 1.1 Hello World !程序(完整段) (注:所有的标点符号以及空格回车均为英文输入法状态下的,否则报错!) DATAS SEGMENT STRING DB ‘Hello World !’,13,10,’$’ DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX LEA DX,STRING MOV AH,9 INT 21H MOV AH,4CH INT 21H CODES ENDS END START 1.2 Hello World !程序(简化段) .MODEL SMALL .DATA

STRING DB’Hello World !’,13,10,’$’ .STACK .CODE .STARTUP LEA DX,STRING MOV AH,9 INT 21H .EXIT END 2.1完整段的求3+5的和 DATA SEGMENT FIVE DB 5 DATAS ENDS STACKS SEGMENT DB 128 DUP(?) STACKS ENDS CODES SEGMENT ASSUME CD:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV AL,FIVE

ADD AL,3 ADD AL,30H MOV DL,AL MOV AH,2 MOV AH,4CH INT 21H CODES ENDS END START 2.2;简化段的求3+5的和.MODEL SMALL .DATA FIVE DB 5 .STACK DB 128 DUP (?) .CODE .STARTUP MOV AL,FIVE ADD AL,3 ADD AL,30H MOV DL,AL MOV AH,2 INT 21H

如何用记事本编写一个简单的java代码

如何用记事本编写一个简单的j a v a代码 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

一:怎么用记事本写第一个java代码 第一步:新建txt文档 首先我们在F盘新建一个txt文档,并命名为,如下图所示: 第二步:编写代码 我们双击打开:如下图所示 第三步:编写好代码 我们在记事本中写代码,写好后如下所示:

然后我们同时按Ctrl+s键保存,然后关闭记事本即可 上面的源代码如下: public class Test{//这里的Test为类名,这里类名要与我们刚才新建的记事本的名字必须一致,首字母大写 public static void main(String[] args){//java中的主函数的写法 "HelloWorld");//java中的输出语句写法 } } 第三步:打开控制台界面 我们在计算机中,打开如下图界面,

然后在这里,输入cmd,并按回车,然后弹出如图所示

第四步:在控制台中运行并输出 我们用鼠标点击一下里面黑色部分,然后输入F:然后回车,然后再输入javac 然后回车,最后输入java Test,就可以看到结果了,如下图所示:

红色圈出来部分就是结果了 二:温馨提示: 1,上面演算中在控制台中首先输入F:的原因是因为我在F盘建立一个文本文档,并命名为,如果你是把你的文档文档建立在D盘,则应该输入D: 以此类推。 2,如果你是在F盘下的CH文件夹建立一个记事本,并命名为,则输入的情况如下, cd CH表示转到CH这个文件夹下,然后再输入回车,再输入java Test 就可以看到运行结果了

语义分析与中间代码生成程序的设计原理与实现技术__实验报告与源代码_北京交通大学

语义分析及中间代码生成程序设计原理与实现技术 XXX 1028XXX2 计科1XXX班 1.程序功能描述 完成以下描述赋值语句和算术表达式文法的语法制导生成中间代码四元式的过 程。 G[A]:A→V:=E E→E+T∣E-T∣ T→T*F∣T/F∣F F→(E)∣i V→i 说明:终结符号i 为用户定义的简单变量,即标识符的定义。 2. 设计要求 (1)给出每一产生式对应的语义动作;(2)设计中间代码四元式的结构(暂不与符号表有关)。(3)输入串应是词法分析的输出二元式序列,即某算术表达式“实验项目一”的输出结果。输出为输入串的四元式序列中间文件。(4)设计两个测试用例(尽可能完备),并给出程序执行结果四元式序列。 3.主要数据结构描述: 本程序采用的是算符优先文法,文法以及算符优先矩阵是根据第四次实验来修改的,所以主要的数据结构也跟第四次差不多,主要为文法的表示,FirstVT集和LastVT 集以及算符优先矩阵:

算符优先矩阵采用二维字符数组表示的: char mtr[9][9]; //算符优先矩阵 4.程序结构描述: 本程序一共有8功能函数: void get(); //获取文法 void print(); //打印文法 void fun(); //求FirstVT 和LastVT void matrix(); //求算符优先矩阵 void test(); //测试文法 int cmp(char a,char b); 比较两个运算符的优先级 1 0 -1 void out(char now,int avg1,int avg2); //打印四元式 int ope(char op,int a,int b); //定义四元式计算方法 5.实验代码 详见附件 6.程序测试 6.1 功能测试 程序运行显示如下功能菜单:

新版汇编语言程序设计习题答案(钱晓捷主编)电子教案

新版汇编语言程序设计习题答案(钱晓捷主 编)

新版汇编语言程序设计习题答案(钱晓捷主编) 第一章汇编语言基础知识 1.1、简述计算机系统的硬件组成及各部分作用 1.2、明确下列概念或符号: 主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB 1.3、什么是汇编语言源程序、汇编程序、目标程序? 1.4、汇编语言与高级语言相比有什么优缺点? 1.5、将下列十六进制数转换为二进制和十进制表示 (1)FFH (2)0H (3)5EH (4)EFH (5)2EH (6)10H (7)1FH (8)ABH 1.6、将下列十进制数转换为BCD码表示 (1)12 (2)24 (3)68 (4)127 (5)128 (6)255 (7)1234 (8)2458 1.7、将下列BCD码转换为十进制数 (1)10010001 (2)10001001 (3)00110110 (4)10010000 (5)00001000 (6)10010111 (7)10000001 (8)00000010 1.8、将下列十进制数分别用8位二进制数的原码、反码和补码表示 (1)0 (2)-127 (3)127 (4)-57 (5)126 (6)-126 (7)-128 (8)68 1.9、完成下列二进制数的运算 (1)1011+1001 (2)1011-1001 (3)1011×1001 (4)10111000÷1001 (5)1011 ∧~1011 (8)1011 ⊕ 1001 1001(6)1011 ∨1001(7) 1.10 数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0dh、0ah对应的是什么字符? 1.11、计算机中有一个“01100001”编码,如果把它认为是无符号数,它是10进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符? 1.12、简述Intel 80x86系列微处理器在指令集方面的发展。 1.13、什么是DOS和ROM-BIOS? 1.14、简述PC机最低1MB主存空间的使用情况。 1.15、罗列8086CPU的8个8位和16位通用寄存器,并说明各自的作用。 1.16、什么是标志,它有什么用途?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义。

用记事本编写整人小程序

不需要任何编程基础,不需要任何编程软件,只需使用电脑里自带的记事本软件就可以轻松编写出整人的小程序,甚至是病毒。。。。。。 首先,单击右键,新建一个文本文档,输入:msgbox"你是猪!" 然后,点击文件->另存为->保存类型:所有文件->文件名xxxx.vbs,名字随便起,但一定要记得把后缀名改为 .vbs。

然后打开刚保存的xxxx.vbs

哈哈,很好玩吧,双引号里的内容”你是猪!”可以随意更改,但双引号一定要用英文输入法来写。嗯,下面正式开始整人。。。。。。 按照前面说的,在记事本上输入如下图,并保存为55.vbs。

其中wscript.Sleep 500为停留500毫秒,可随便更改 下面这段代码就是一个启动关机程序的东东,300这个数是指300秒倒计时,这个数字也可以随便改,这段代码也可以独立保存出来作为一个关机程序 dim WSHshell set WSHshell = wscript.createobject("wscript.shell") WSHshell.Run "cmd.exe /c shutdown -s -t 300" 打开这个文件,如果你点击“是”,你就会进入一个死循环中,就是不断地弹出对话框。解决方法是按下Alt+Ctrl+Delete键,选择“进程”,把wscript.exe结束掉。如果点击“否”,

则进入关机倒计时,解决方法是点击“开始”->“运行”,在对话框里输入shutdown -a ,再点击“确定”即可。 最后嘛,把这文件创建桌面快捷方式,然后把图标换了,换成QQ什么的,你懂的,呵呵。。。。。。当然,这种VBS编程还有很多好玩的地方,比如病毒,我也收藏有几个,由于我是一等一的良好市民,就不写上来了。 最后再送上一个程序: dim a do a=inputbox("输入123,否则关机。") if a="123" then msgbox" 很遗憾,你中招了,这是整人程序,你就等着关机吧" WSHshell.Run "cmd.exe /c shutdown -s -t 300" wscript.sleep 1000 exit do else msgbox"乖点,输入123" end if loop

编译方法实验报告(中间代码生成器的设计)

编译方法实验报告 2011年10月

一、实验目的 熟悉算术表达式的语法分析与中间代码生成原理。 二、实验内容 (1)设计语法制导翻译生成表达式的四元式的算法; (2)编写代码并上机调试运行通过。 输入——算术表达式; 输出——语法分析结果; 相应的四元式序列。 (3)设计LL(1)分析法或LR(0)分析法的属性翻译文法,并根据这些属性翻译文法,使用扩展的语法分析器实现语法制导翻译。 三、实验原理及基本步骤 ●算术表达式文法: G(E): E →E ω0 T | T T →T ω1 F | F F → i | (E) ●文法变换: G’(E) E →T {ω0 T} T →F {ω1 F} F → i | (E) ●属性翻译文法: E →T {ω0“push(SYN,w)” T “QUAT”} T →F {ω1“push(SYN, w)” F “QUAT”} F →i “push(SEM, entry(w))” | (E) 其中: push(SYN, w) —当前单词w入算符栈SYN; push(SEM, entry(w)) —当前w在符号表中的入口值压入语义栈SEM; QUA T —生成四元式函数 i.T = newtemp; ii.QT[j] =( SYN[k], SEM[s-1], SEM[s], T); j++; iii.pop( SYN, _ ); pop( SEM, _ ); pop( SEM, _ ); push( SEM, T ); ●递归下降子程序: 数据结构:SYN —算符栈; SEM —语义栈;

四、数据结构设计 使用递归的结构进行四元式的设计,同时,运用堆栈结构将四元式的输出序列打印出来 while ( exp[i]=='+' || exp[i]=='-'){ syn[++i_syn]=exp[i]; //push(SYN,w) i++; //read(w) T(); quat();} while ( exp[i]=='*' || exp[i]=='/'){ syn[++i_syn]=exp[i]; //push(SYN,w) i++; //read(w) F(); quat();} void quat(){ strcpy(qt[j],"(, , , )");

Windows汇编语言程序设计基础

第1章Windows汇编语言程序设计基础 Windows汇编语言程序分为控制台编程和图形界面编程两种,控制台编程相对简单一些。为了由浅入深,本书从控制台编程开始讲解。 读者总希望用最快的速度掌握书中的概貌,为此从一个最简单的程序开始。一些汇编语言语法也结合程序进行讲解,有些指令和语法用注解的方法说明。 1.1 第一个完整的Windows汇编语言程序 Windows汇编语言程序有自己的编程规范,它的编程规范比Visual C要简单得多,调试也很方便。更重要的是系统把重要的东西都呈现给读者,使读者更能掌握其中的本质。 用一条一条的汇编语言指令很难写出大程序,Windows汇编语言程序也是调用系统提供的API来写程序。因而,用Windows汇编语言同样可写出大程序。以下是一个最简单的Windows程序。 ;程序功能:显示一个信息框。 ;ex1.asm(e:\masm\base) ;程序名 ;编译链接方法: ;ml /c /coff ex1.asm ;link /subsystem:console ex1.obj .386 ;指明指令集 .model flat,stdcall ;程序工作模式,flat为Windows程序使用的模式(代码和数据 ;使用同一个4GB段),stdcall为API调用时右边的参数先入栈option casemap:none ;指明大小写敏感 include windows.inc include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib .data ;数据段 szCaption db '抬头串',0 szText db 'Hello!',0 .code ;代码段 start:

编写一个记事本程序_要求:_用图形用户界面实现。_能实现编辑、保存、另存为、查找替换等功能。

import java.io.*; import java.util.Calendar; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class NoteBook extends JFrame implements ActionListener,ItemListener,WindowListener,MouseListener{ Container c = this.getContentPane(); JMenuBar jmb = new JMenuBar(); JColorChooser jcc = new JColorChooser(); JMenu jm1 = new JMenu("文件(F)"); JMenu jm2 = new JMenu("编辑(E)"); JMenu jm3 = new JMenu("格式(O)"); JMenu jm4 = new JMenu("查看(V)"); JMenu jm5 = new JMenu("帮助(H)"); JMenuItem jmi1 = new JMenuItem("新建(N)"); JMenuItem jmi2 = new JMenuItem("打开(O)"); JMenuItem jmi3 = new JMenuItem("保存(S)"); JMenuItem jmi4 = new JMenuItem("退出(X)"); JMenuItem jmi5 = new JMenuItem("撤消(U)"); JMenuItem jmi6 = new JMenuItem("复制(C)"); JMenuItem jmi7 = new JMenuItem("粘贴(P)"); JMenuItem jmi8 = new JMenuItem("剪切(T)"); JMenuItem jmi12 = new JMenuItem("日期和时间"); JMenuItem jmi9 =m new JMenuItem("字体(E)"); JCheckBoxMenuItem jcbmi = new JCheckBoxMenuItem("自动换行(W)"); JMenuItem jmi10 = new JMenuItem("删除(S)"); JMenuItem jmi11 = new JMenuItem("背景颜色(H)"); JTextArea jta = new JTextArea(15,15); JScrollPane jsp = new JScrollPane(jta); //PupolMenu pm = new Pupolmenu(); NoteBook(){ this.addWindowListener(this); c.setLayout(new BorderLayout()); c.add(jmb,BorderLayout.NORTH); this.setTitle("新建文本文档"); jmb.add(jm1); jm1.setMnemonic('f'); jm1.addActionListener(this); jmb.add(jm2); jm2.setMnemonic('e'); jmb.add(jm3); jm3.setMnemonic('o'); jmb.add(jm4);

编译原理实验 中间代码生成

实验四中间代码生成 一.实验目的: 掌握中间代码的四种形式(逆波兰式、语法树、三元式、四元式)。 二.实验内容: 1、逆波兰式定义:将运算对象写在前面,而把运算符号写在后面。用这种表示法表示的表 达式也称做后缀式。 2、抽象(语法)树:运算对象作为叶子结点,运算符作为内部结点。 3、三元式:形式序号:(op,arg1,arg2) 4、四元式:形式(op,arg1,arg2,result) 三、以逆波兰式为例的实验设计思想及算法 (1)首先构造一个运算符栈,此运算符在栈内遵循越往栈顶优先级越高的原则。 (2)读入一个用中缀表示的简单算术表达式,为方便起见,设该简单算术表达式的右端多加上了优先级最低的特殊符号“#”。 (3)从左至右扫描该算术表达式,从第一个字符开始判断,如果该字符是数字,则分析到该数字串的结束并将该数字串直接输出。 (4)如果不是数字,该字符则是运算符,此时需比较优先关系。 做法如下:将该字符与运算符栈顶的运算符的优先关系相比较。如果,该字符优先关系高于此运算符栈顶的运算符,则将该运算符入栈。倘若不是的话,则将此运算符栈顶的运算符从栈中弹出,将该字符入栈。 (5)重复上述操作(1)-(2)直至扫描完整个简单算术表达式,确定所有字符都得到正确处理,我们便可以将中缀式表示的简单算术表达式转化为逆波兰表示的简单算术表达式。 四、程序代码: //这是一个由中缀式生成后缀式的程序 #include<> #include<> #include<> #include<> #define maxbuffer 64 void main() { char display_out(char out_ch[maxbuffer], char ch[32]); //int caculate_array(char out_ch[32]); static int i=0; static int j=0; char ch[maxbuffer],s[maxbuffer],out[maxbuffer]; cout<<"请输入中缀表达式: ";

微机实验一 汇编语言程序调试基础训练

实验一汇编语言程序调试基础训练 实验目的: 1、学习、掌握汇编程序的编辑、编译、链接的方法 2、学习常用的DEBUG命令,掌握汇编程序调试方法 3、通过调试程序,弄清汇编指令和机器码的关系 4、弄清代码段、数据段、堆栈段中的段地址和偏移量的形成 实验内容: 1、源程序的编辑 2、源程序的编译、链接 3、汇编程序调试,完成相关数据的记录和分析 实验步骤: 一、源程序的编辑、编译、链接 1、在E盘建立L8086文件夹,将L8086文件全部拷入该目录 2、用EDIT或写字板编辑器,将例程BBADD.ASM输入计算机,以 BBADD.ASM文件名保存程序 3、用MASM.EXE工具将源程序编译成BBADD.OBJ文件 4、用LINK.EXE工具将目标文件链接成BBADD.EXE可执行文件 二、程序载入和退出 1、进入DOS命令提示符界面 2、将路径切换至:E>L8086> 3、输入DEBUG BBADD.EXE 回车,此时程序载入到DEBUG调试 状态 4、按Q回车,则退出调试状态返回到操作系统 三、程序的调试 1、在DEBUG调试状态,输入U回车,显示

此时可以看到源程序经编译后,载入到计算机内存中每一条指令所对应的机器码;可以看到指令在代码段中所处的段地址和偏移量等信息。对照源程序填写以下信息: 程序起始地址:[ :] 程序结尾地址:[ :] 用户数据段地址:[ ] 变量R0分得的地址:[ ] 变量R2分得的地址:[ ] 变量R3分得的地址:[ ] 变量R4分得的地址:[ ] 以上信息说明:U命令可以显示反汇编信息 2、输入R回车,显示以下的信息: 这是CPU内所有寄存器信息,注意观察和记录 (1)段地址信息:CS= DS= SS= ES= (2)通用寄存器信息: AX= BX= CX= DX= SI= DI= BP=

代码生成器

代码生成器使用规则 1.创建一个表,红色为必须字段,该sql执行前去掉行前的tab符号 DROP TABLE IF EXISTS `books`; CREATE TABLE `books` ( `id` varchar(64) NOT NULL COMMENT '编号', `bookid` varchar(30) default NULL COMMENT '书号', `name` varchar(100) default NULL COMMENT '书名', `author` varchar(100) default NULL COMMENT '作者', `price` float default NULL COMMENT '单价', `number` int(11) default NULL COMMENT '存库', `publish` varchar(30) default NULL COMMENT '出版社', `img` varchar(30) default 'upload/default.jpg' COMMENT '封面', `create_by` varchar(64) default NULL COMMENT '创建者', `create_date` datetime default NULL COMMENT '创建时间', `update_by` varchar(64) default NULL COMMENT '更新者', `update_date` datetime default NULL COMMENT '更新时间', `remarks` varchar(255) default NULL COMMENT '备注信息', `del_flag` char(1) NOT NULL COMMENT '删除标志', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 2.修改Generate类,修改如下 String moduleName = "books"; // 模块名,例:sys String subModuleName = ""; // 子模块名(可选) String className = "books"; // 类名,例:user String classAuthor = "石义良"; // 类作者,例:ThinkGem String functionName = "图书"; // 功能名,例:用户 // 是否启用生成工具 Boolean isEnable = true; 右击,run as java application 3.刷新整个项目,将com.thinkgem.jeesite.modules.books.web.BooksController中的 return"books/booksList"; return"books/booksForm"; 修改为 return"modules/books/booksList"; return"modules/books/booksForm"; 4.将/JeeSite/src/main/java/com/thinkgem/jeesite/modules/books/entity/Books.java中的父类修改IdEntity,并删除id成员,添加其他非红色字段成员及get、set方法。并将表映射为books表。 5.以thinkgem身份登录,在菜单管理中添加菜单:

汇编语言小程序

16进制转化为10进制STACK SEGMENT STACK'STACK' DW100H DUP(?) TOP LABEL WORD STACK ENDS DATA SEGMENT KEYBUFFER DB100 ;DB ? ;DB 100 DUP(?) DECIMAL DB 5 DUP(?) STRING1 DB'PLEASE INPUT DECIMAL DATA:$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,CS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV SS,AX LEA SP,TOP LEA DX,STRING1 MOV AH,09H INT 21H MOV AH,0AH LEA DX,KEYBUFFER ;MOV AX,23456 INT 21H ;LEA SI,KEYBUFFER MOV AX,DX LEA DI,DECIMAL CALL DISPAX MOV AH,4CH MOV AL,0 INT 21H DISPAX PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI LEA DI,DECIMAL

CALL TRANS16TO10 MOV CX,5 LEA DI,DECIMAL+4 MOV AH,2 DISPAXD: MOV DL,[DI] ADD DL,30H DEC DI INT 21H LOOP DISPAXD POP DI POP DX POP CX POP BX POP AX RET DISPAX ENDP TRANS16TO10 PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI MOV BX,10 MOV CX,5 LOOP1: XOR DX,DX DIV BX MOV[DI],DX INC DI LOOP LOOP1 LEA DX,DECIMAL MOV AH,09H INT 21H POP DI POP DX POP CX POP BX POP AX RET TRANS16TO10 ENDP

相关文档
相关文档 最新文档