实验一---MASM-For-Windows-的使用及顺序程序设学习资料

实验一---MASM-For-Windows-的使用及顺序程序设学习资料
实验一---MASM-For-Windows-的使用及顺序程序设学习资料

实验一---M A S M-F o r-W i n d o w s-的使用及顺序程序设

实验一 MASM For Windows 的使用及顺序程序设计

一、实验目的

1、熟悉在PC机上建立、汇编、连接、调试和运行8086汇编语言程序的过程。

2、熟悉masm for windows调试环境及DEBUG常用命令的使用

二、实验内容

1.DEBUG常用命令(U、R、D、E、F、T、G、Q)的操作使用

2.编程实现两个16位无符号数的加、减、乘、除运算。

有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。

三、实验设备

PC机一台、masm for windows 汇编语言集成环境

四、实验准备

1) 分析题目,将程序中的原始数据和最终结果的存取方法确定好。

2) 画出流程图。

3) 写出源程序。

4) 对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。

五、实验步骤

1) 输入源程序。

2) 汇编、连接程序,生成 .EXE文件,执行文件,检查结果。

六、学生实验报告的要求

1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。

2) 说明程序中各部分所用的算法。

3) 说明主要符号和所用到寄存器的功能。

4) 上机调试过程中遇到的问题是如何解决的。

5) 对调试源程序的结果进行分析。

4) 说明标志位CF、SF和OF的意义。

DEBUG的常用命令

1、R 显示或修改寄存器的内容

命令格式:-R

2、D 显示存储单元的内容

实验二顺序程序设计

实验二简单C程序设计—顺序结构 一、实验目的 1.掌握C语言中使用最多的一种语句――赋值语句的使用方法。 2.掌握各种类型数据的输入输出方法,能正确使用各种格式输出符。 二、实验内容和步骤 1.掌握各种格式输出符的使用方法。 #include int main() {int a,b; float d,e; char c1,c2; double f,g; long n,m; unsigned p,q; a=61;b=62; c1='a';c2='b'; d=3.56; e=-6.87; f=3156.890121;g=0.123456789; m=50000;n=-60000; p=32768;q=40000; printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n",f,g,m,n,p,q); return 0; } (1)运行此程序并分析运行结果。 a,b都是以整型输出。C1c2以字符型输出。d,e以浮点型输出,数据长度都为6位,所以前面都有空格占位,加上小数点,数字或负号一共6位。 f以浮点型输出,数据长度为15位,小数位有6位,故前面有四个空格;g以浮点型输出,数据长度为15位,小数位有12位,故前面有一个空格;m,n都以长整型输出;p,q都以无字符型输出。 (2)在此基础上,修改程序的第9-14行: a=61;b=62; c1=a;c2=b; f=3156,890121;g=0.123456789; d=f;e=g; p=a=m=50000;q=b=n=-60000; 运行程序,分析运行结果。 把a,b的值依次赋给c1,c2,c1,c2的数据类型为字符型,根Ascll代码可知61对应=,62对应>;将f,g的值赋给d,e,d,e的数据类型为浮点型,且数据长度为6位,小数位有2位,故得出此结果;按照运算符的结合顺序可知程序把50000依次赋给了m,p,a,把-60000

实验-4顺序结构

实验4:顺序结构程序设计 实验名称:顺序结构程序设计成绩: 实验日期:年月日实验报告日期:年月日 一、实验目的 1、掌握:使用标准输入/输出函数进行常见数据类型的数据的输入/输出方法。 2、初步培养编制程序框图和源程序、准备测试数据以及实际调试程序的独立编程能力。 二、实验内容 在Turbo C下完成程序题: (1)根据商品原价和折扣率,计算商品的实际售价(结果精确到小数点后2位) (2)根据圆柱体的半径和高,计算圆周长、圆面积、圆柱体表面积、圆柱体体积(结果精确到小数点后3位) 注:变量名可以自由选择,以易于理解为原则;数据由键盘输入。 三、实验要求 1、实验前编制程序框图、编写源程序、准备测试数据。 2、实验测试数据要求从键盘输入。应尽力追求程序的完美。比如要求输入数据,应当显示提示 字符串,提示用户输入;输出时要求有文字说明。 3、在Turbo C下完成程序的编辑、编译、运行,获得程序结果。如果结果有误,应找出原因, 并设法更正之。 4、编制的程序必须保存在D:\用户目录中。注:用户目录可以用学号或姓名拼音简写。 四、实验步骤、过程 1、启动操作系统,进入DOS窗口;切换到用户磁盘,创建、进入用户目录。(方法、命令与 实验1相同) 2、启动Turbo C集成开发环境。(方法与实验1相同) 3、完成2个程序题。(编辑、保存、编译连接、运行程序,步骤与实验1相同) 4、退出Turbo C集成开发环境,关机。

五、源程序清单、测试数据、结果。 1、根据商品原价和折扣率,计算商品的实际售价 程序框图: 程序 main() { float price,discount,fee; printf("Input Price,Discount:"); fee=price*(1-discount/100); } 运行: Input Price,Discount: Fee= 注:下划线表示程序运行后用户输入的数据,表示回车,以后不再解释。 2、根据圆柱体的半径和高,计算圆周长、圆面积、圆柱体表面积、圆柱体体积程序 void main() { float r,h,pi=3.1415926; float c0,s0,s,v; printf("Input r,h(m):"); scanf("%f,%f",&r,&h);

实验2顺序结构程序设计

《C语言程序设计》实验报告 ---------------------------------------------------------------------------------------------- 实验2顺序结构程序设计 一、实验目的 (1)掌握C语言中赋值语句的使用方法。 (2)掌握各种类型数据的输入与输出方法,能正确使用各种格式转换符。(3)掌握C语言的顺序结构程序设计。 二、实验内容与步骤 1.输入程序,观察程序运行结果 (1)输入并运行下面的程序,掌握用scanf()函数输入多个整型数据时,格式说明中无分隔符的正确使用。 /*c2-1.c*/ #include int main() { int i,j; printf("Enter i,j\n"); scanf("%d%d",&i,&j); printf("i=%d,j=%d\n",i,j); return 0; } 总结与反思: 1.printf("Enter i,j\n");语句是对下面的输入语句起提示作用;2. 本题在scanf()语句中,输入两个整数之间可用空格、Tab或回车键分隔,但用其他的分隔符不能得到正确的值。 (2)输入并运行下面的程序,掌握用scanf()函数输入多个整型数据时,格式说明中逗号分隔符的正确使用。 /*c2-2.c*/ #include int main() { int i,j; printf("Enter i,j\n");

scanf("%d,%d",&i,&j); printf("i=%d,j=%d\n",i,j); return 0; } 总结与反思:本题在scanf()语句中,输入两个整数之间必须用逗号分割,用 其他的分隔符时第一个变量能得到正确的值,第二个变量不能得到正确的值。(3)输入并运行下面的程序,掌握格式scanf()函数中普通字符按原样输入的使用方法。 /*c2-3.c*/ #include int main() { float i,j; scanf("i=%f,j=%f",&i,&j); printf("i=%.3f,j=%.3f\n",i,j); return 0; } 总结与反思:用scanf()函数输入内容,必须严格按照格式说明部分进行键入。 (4)输入并运行下面的程序,如果scanf()函数中格式与变量类型的对应关系错误,将不能得到正确的结果。 /*c2-4.c*/ #include int main() { int i,j; scanf("%f,%f",&i,&j); printf("i=%d,j=%d\n",i,j); return 0; } 总结与反思:1.与int(基本整型)对应的应是%d,与float(浮点型)对应的是%f。 2.scanf()函数格式说明应与定义的变量类型一致! (5)输入一个大写字母A,将它转换为小写字母a,输出小写字母a及对应的ASCII码值97,要求输出格式为“j=a,j=97”,完善下面程序中的输出语句。 /*c2-5.c*/ #include int main() { int j;char i; scanf("%c",&i); j=i+32; printf("j=%c,j=%d\n",j,j);

实验二+顺序结构程序设计

实验二顺序结构程序设计 一、实验学时 2学时 二、实验目的 (一)掌握简单结构的C语言程序设计; (二)掌握输入、输出函数的正确使用。 三、预习要求 熟悉并掌握scanf()函数,printf()函数,getchar()函数和putchar()函数的语法格式,比较它们在使用时的异同。 四、实验内容 (一)输入并运行下面的程序,掌握scanf()函数输入多个整型数据时,格式说明中无分隔符的正确使用。 main ( ) { int i,j; scanf("%d%d",&i,&j); printf("i=%d,j=%d\n",i,j); } 注意:运行程序时,当调用格式输入函数scanf()时,首先返回用户屏幕,等待用户从键盘上输入两个整数并回车,程序才能继续向下执行。 从键盘上为变量i,j赋值32和18时,两个整数之间可用空格、Tab或回车键分隔。试一试,用其它的分隔符输入时各个变量,能否得到正确值。 (二)输入并运行下面的程序,观察与上一程序的区别。注意:printf("Enter i,j\n");语句对下面的输入语句起提示作用。 main ( ) { int i,j; printf("Enter i,j\n"); scanf("%d%d",&i,&j); printf("i=%d,j=%d\n",i,j); } 注意:运行程序时,先执行printf("Enter i,j\n");,当调用格式输入函数scanf()时,返回用户屏幕,屏幕上会有提示Enter i,j,等待用户从键盘上输入两个整数。 (三)输入并运行下面的程序,掌握scanf()函数输入多个整型数据时,格式说明中逗号分隔符的正确使用。 main ( ) { int i,j; printf("Enter i,j\n"); scanf("%d,%d",&i,&j); printf("i=%d,j=%d\n",i,j); }

实验一 顺序程序设计

实验一顺序程序设计 一、实验目的: 1、学习顺序程序的设计方法 2、熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程 3、学习和掌握字符及字符串的输入输出方法 二、实验环境: 硬件环境IBM/PC 及其兼容机 软件环境操作系统DOS 编辑程序EDIT或其他编辑程序 汇编程序MASM.EXE 连接程序LINK.EXE 调试程序DEBUG.EXE 可视化编程环境emu8086 三、实验内容: 1、已知X和Y是数据段中的两个无符号字节单元,用程序完成表达式Z=(X2+Y2)/2的计算。 2、从键盘读入两个一位数(按键时保证按下的是数字键),显示它们的积。 四、实验要求: 1、画出实验程序流程图,独立完成源代码的编写。 开始 X中的内容 送AL 计算X*X X*X乘积 送BX Y中的内 容送AL 计算Y*Y 计算X*X+Y*Y 计算(X*X+Y*Y)/2结果送Z单元 结束 开始 读入第1个数字 并保存在BL中 读入第2个数字 将两个数字都转换成十进制数 两个数相乘, 积在AX中 积除以10取商送AL,余数在AH中 转换成相应的 ASCII码,并 保存在BX中 输出十位数 输出个位数 结束

2、在DOS环境下使用MASM完成对源代码的编译、连接,有必要的情况下使用debug.exe 进行调试。 3、WINDOS环境下使用EMU8086完成上第2步的工作。 4、与程序流程图比较,验证是否完成规定的功能,若未达要求,返回第1步。 5、提交完成的源代码,要求对关键语句进行注释。 ①源代码如下: DA TA SEGMENT X DB 5 Y DB 4 Z DW ? DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX ;初始化数据段 MOV AL,X ;X中的内容送AL MUL AL ;计算X*X MOV BX,AX ;X*X乘积送BX MOV AL,Y ;Y中的内容送AL MUL AL ;计算Y*Y ADD AX,BX ;计算X2+Y2 SHR AX,1 ;计算(X2+Y2)/2 MOV Z,AX ;结果送Z单元 MOV AH,4CH INT 21H ;返回DOS CODE ENDS END START ;汇编结束 ②源代码如下: CODE SEGMENT ASSUME CS:CODE MAIN: MOV AH,1 INT 21H ;读入第1个数字 MOV BL,AL ;保存在BL中 MOV AH,2 MOV DL,13 INT 21H ;回车 MOV DL,10 INT 21H ;换行 MOV AH,1 INT 21H ;读入第2个数字 SUB AL,30H ;第2个数字转换成十进制数 SUB BL,30H ;第1个数字转换成十进制数 MUL BL ;两个数相乘,积在AX中

最简单的C程序设计—顺序程序设计实验报告

嘉应学院计算机学院 实验报告 课程名称程序设计基础实验名称实验地点 指导老师实验时间提交时间 班级姓名座号 一、实验目的和要求 (1)掌握C语言中使用最多的一种语句——赋值语句的使用方法。 (2)掌握各种类型数据的输入输出的方法,能正确使用各种格式装换符。 (3)进一步掌握编写程序的和调试程序的方法。 二、实验环境和方法 实验方法: (一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。 (二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。 (三)根据实验内容,编译程序。 实验环境:Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”,根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果是否正确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容:编译以下题目的程序并调试运行。 实验① (1)通过下面的程序掌握各种格式装换符的正确使用方法。 ①输入以下程序:

②运行程序并分析结果如图: ③在此基础上,将程序第10~14行改为 c1=a;c2=b; f=3157.;g=0.; d=f;e=g; P=a=m=50000;q=b=n=-60000; 运行程序,分析结果如: (二)设圆半径r=1.5,圆柱高h=3,求圆周长﹑圆面积﹑圆球表面积﹑圆球体积﹑圆柱体积。用scanf 输入数据,输出计算结果,输出时要求有文字说明,取小数点后两位数字。 程序代码为: #include int main() {int a,b; float d,e; char c1,c2; double f,g; long m,n; unsigned int p,q; a=61,b=62; c1='a';c2='b'; d=3.56;e=-6.87; f=3157.;g=0.; m=50000;n=-60000; p=32768;q=40000; printf("a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.12f\nm=%1d,n=%1d\np=%u,q=%u\n",f,g,q,m,n,p,q); } #include int main() {float h,r,l,s,sq,vq,vz; float pi=3.; printf("请输入圆半径r ,圆柱高h :"); scanf("%f,%f",&r,&h); l=2*pi*r; s=r*r*pi; sq=4*pi*r*r; vq=3.0/4.0*pi*r*r*r; vz=pi*r*r*h;

实验一 顺序结构程序设计

实验一顺序结构程序设计 一、实验目的 1. 掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。2 2. 学会使用有关算术运算符,以及包含这些运算符的表达式。 3. 掌握数据的输入输出方法,能正确使用各种格式转换符。 二、实验学时数 4学时 三、实验内容和步骤 1..启动TC 2.0编译系统,进入编辑界面,建立一个新文件。文件名自定。(要求每个学生建立一个自己的文件夹,每个同学的练习和作业的源程序命名形成系列,便于检查、查找和考核)。 利用一个小程序验证常量、变量的使用方法与特点,验证数据类型和表达式值的计算规则及其输出格式。 参考程序: main( ) { char c1,c2; c1=97;c2=98; printf(″%c,%c\n″,c1,c2); } (1)在此基础上加入以下printf语句,并运行。 printf(″%d,%d\n″,c1,c2); (2)将第二行改为以下语句,并运行。 int c1,c2; (3)将第三行改为以下语句,并运行。 c1=300;c2=400; 分别写出三次运行结果。 2.编程并调试运行 (1)编程序,用getchar函数读入两个字符给c1、c2,然后分别用putchar函数和printf 函数输出这两个字符。上机运行此程序,比较putchar和printf函数输出字符的特点。 (2)试编写程序,从键盘输入一个大写字母,要求改用小写字母输出。 3.写出下面程序的运行结果: 1)main() { int x=1,y=1,z=1; y=y+x; x=x+y; printf(″%d\n″,x); printf(″%d\n″,y); } 2) main()

3、顺序程序设计作业

实验3 顺序程序设计 一、实验目的 1.学习编写简单的C程序。 2.在编写和调试程序的过程中,培养发现问题、分析问题、解决问题的能力。 3.掌握程序的基本组成:说明数据、输入数据、加工数据、输出数据。 二、实验预备知识 1.C语言的各种数据类型; 2.C语言的各种运算符和表达式; 3.C程序中各种数据的输入和输出。 三、实验内容 编写程序,实现以下功能。 1.由键盘任意输入一个圆的半径,计算其面积。 2.由键盘任意输入一个三角形的3条边,计算其面积。 3.由键盘任意输入一个长方体的长、宽、高,计算体积。 4.由键盘任意输入一个圆柱的半径和高,计算其底面积、表面积、体积。 5.由键盘任意输入4门课程的成绩,计算它们的平均成绩。 6.由键盘任意输入一个数字字符(‘0’-‘9’),将其转换为数字输出。 7.由键盘任意输入1个大写字母,将其转化为小写字母后输出。 8.由键盘任意输入银行存款本金、存款年利率、存款年限、利息税,计算本金和利息总和。9.由键盘任意输入2个数据,将它们交换后输出。 10.由键盘任意输入1个4位数整数,分别输出其中的个位、十位、百位、千位。 四、实验分析 1.分析并总结不同数据类型的数据,它们的表示形式、表示范围、机内所占字节的数量、可以进行的运算的不同。 2.当表达式中出现了多种运算符时,应特别注意它们的优先级和结合性。 3.正确使用格式输入和输出函数中的各种格式符。 4.掌握顺序程序设计的方法。 五、实验报告 1.在实验过程中,将每一个程序的源代码保存,如1.C、2.C、3.C、。。。。。。、10.C。 2.建立本人学号和姓名为名称的文件夹,如:2014211234王军-3,将每一个程序的源代码存入此文件夹(删除其他所有文件,只保留.C 的源程序文件,并且压缩)。 3.将此文件压缩文件上传到:学生交作业\2015春C语言程序设计作业\第3次作业\机械14-1。

汇编实验2 顺序程序设计

汇编实验二顺序结构程序设计 实验目的: (1)掌握汇编语言程序上机过程。 (2)掌握顺序结构程序调试的方法。 实验内容: 调试查表程序 内存中自TABLE开始的七个单元中连续存放着自然数0~6的立方值(立方值表), 任一个数X(0≤X≤6)在FIRST单元中,要求查表找出X的立方值,存SECOND 单元。 准备工作: 1.进入D: 2.建立一个文件夹hb, 即d:\hb 3.将MASM和LINK复制到该文件夹中 4.单击“开始”-“程序”-“附件”-“命令提示符” 5.输入“d:\” 6.输入“cd hb” 操作步骤: 1.输入源程序: EDIT d:\hb\cb.asm 在EDIT编辑环境File菜单下选择Save存盘,选择Exit退出编辑环境

2.汇编源程序 A>MASM CB↙ Microsoft (R) Macro Assembler Version 5.10 Copyright (C) Microsoft Copr 1981,1988 All rights reserved. Object filename [CB.OBJ]:_↙ Source listing [NUL.LST]:↙ Cross-reference [NUL.CRF]:↙ 51394+389950 Bytes symbol space free 0 Warning Errors 0 Severe Errors A> 3.连接目标程序 A>LINK Microsoft (R) Overlay Linker Version 3.64 Copyright (C) Microsoft Corp 1983-1988. All rights reserved. Object Modules [.OBJ]:CB↙ Run File [NUL.MAP]:↙ Libraries [.LIB]: ↙ 显示0个错误才能进行下一步LINK操作 4.执行程序 A>B 没有任何结果输出,原因是程序中没有安排显示输出,结果保存在内存单元中。 5.用DEBUG调试并查看运行结果 A>DEBUG CB.EXE

实验1顺序结构程序设计

1. 10012 计算书费 【问题描述】下面是一个图书的单价表: 计算概论:28.9元/本 数据结构与算法:32.7元/本 数字逻辑:45.6元/本 C++程序设计教程:78元/本 人工智能:35元/本 计算机体系结构:86.2元/本 编译原理:27.8元/本 操作系统:43元/本 计算机网络:56元/本 JAVA程序设计:65元/本 给定每种图书购买的数量,编程计算应付的总费用。 【输入形式】输入每行包含一组10个整数(大于等于0, 小于等于100), 分别表示购买的《计算概论》,《数据结构与算法》, 《数字逻辑》,《C++程序设计教程》,《人工智能》,《计算机体系结构》,《编译原理》,《操作系统》, 《计算机网络》,《JAVA程序设计》的数量(以本为单位)。每两个整数用一个空格分开。 【输出形式】输出一行。该行包含一个浮点数f,表示应付的总费用。精确到小数点后两位。【样例输入】1 5 8 10 5 1 1 2 3 4 【样例输出】2140.20 【评分标准】本题共3个测试点,每个测试点0.333分,全部答对得1.0分。 #include int main() { double a,b,c,d,e,f,g,h,i,j,x; scanf("%lf%lf%lf%lf%lf%lf%lf%lf%lf%lf",&a,&b,&c,&d,&e,&f,&g,&h,&i,&j); x=a*28.9+b*32.7+c*45.6+d*78.0+e*35.0+f*86.2+g*27.8+h*43.0+i*56.0+j*65.0; printf("x=%.2f\n",x); return 0; } 2. 10013 时间相加 【问题描述】用整数表示时间,如:1050表示10点50分,2010表示20点10分,现输入两个时间,求两个时间的和。 例:2030+850=520 不是2880 1055+850=1945 不是1905 【输入形式】两行数据,每行一个整数。 【输出形式】输出相加后的时间整数。 【样例输入】2030 850 【样例输出】520

03实验三 顺序结构程序设计_答案

湖北工业大学实验报告 课程名称:C语言程序设计实验内容实验三顺序结构程序设计 学院:工程技术学院专业班级: 姓名:学号:教师:成绩: 一、实验目的 1、掌握赋值语句、表达式语句、函数调用语句、复合语句、空语句的使用方法。 2、掌握输入、输出函数的格式及格式符的使用。掌握文件包含预处理命令的使用方法。 3、掌握数据的输入、存储、输出之间的关系。 4、掌握顺序程序设计的逻辑结构,掌握数据结构的功能。 二、预习作业 1、程序填空题:试在括号中填入正确的答案,并上机验证程序的正确性。(1) 输入大写字符A,则输出为( )。(文件名:ex3_1.c) (#include ) main( ) { ( char ch,chr; ) chr=(ch= getchar( )) main( ) { ( long int) a =80000 , b = 60000, c, d; ( c) = ( a - b ,a + b ); ( d) = (a + b,a - b); printf(“%ld ,%ld\n”, c, d); }

2、程序改错并上机调试运行 (1)更改下列程序中的位运算符和逻辑运算符,能使变量d、e输出的结果为零。 (文件名:ex3_3.c) #include main( ) { int a = 8, b = 2,c = 3,d,e; /********** found **********/ d = (a % c & ^ a % c); e = a / c - b || && c + + ; printf (“%d, %d\n”, d, e); } (2) 查找改程序中的错误,并修改正确。(文件名:ex3_4.c) #include main( ) { int a = 4, b = 6, c= 3; /********** found **********/ a = a + b = b + c ; b = a < b ?a :b < c ?b :c printf(“%d,%d\n”, a, b); } 3、读程序写结果并上机验证其正确性 (1) 变量 a,b,c,d如下,将变量a以各种格式输出并输出表达式c+a,d – 32的值。(文件名:ex3_5.c) #include main( ) 结果为:(-1,4294967295,37777777777,ffffffff ) { int a = - 1 , b = 2 ; C,B char c = …D?,d = …b?; b = b + c;//??? printf (“%d, %u,%o,%x \n ”,a,a,a,a ); printf (“%c,%c \n ”,c + a, d - 32); } (2) 运行程序后输入”a空格b空格c回车”后,输出结果是(a ,b )。(文件

实验2 顺序结构程序设计

实验2 顺序结构程序设计 2.1 实验目的 1.掌握C语言数据类型的概念,熟悉如何定义一个整型、实型和字符型的变量,以及对它们赋值的方法。 2.掌握输出函数printf()及输入函数scanf()的各种格式控制符的用法。 3.掌握顺序结构程序设计方法及执行过程。 4.进一步熟悉C程序的编辑、编译、连接、运行的过程。 2.2 示例程序 【实验2.1】输入并运行以下程序。 #include main() { printf("What's "); /*输出What's */ printf("your "); /*输出your */ printf("name?\n"); /*’\n’是换行符*/ } 说明: 1.程序的运行结果为“What’s your name?”。 2.printf()函数中只有“格式控制字符串”部分,且只包含普通字符,所以会原样输出。 3.前两行的printf()函数中无换行符’\n’,不进行换行操作,第3行的printf()函数中包含换行符’\n’,字符串输出后换行,这样3个字符串输出到一行上。 【实验2.2】编写已知半径r为15求圆面积的程序。 #include #define PI 3.14159 /*定义符号常量PI*/ main() { float radius,area; /*定义浮点型变量radius,area*/ radius=15.0; /*给半径radius赋值*/ area=PI*radius*radius; /*计算圆面积area */ printf("area=%f\n", area ); /*输出圆面积*/ } 说明: 1.程序的运行结果为“area=706.857727”。 2.程序的第2行定义了符号常量PI。这样做的好处是程序中出现的所有PI,其值均为3.14159,既简化了程序,又提高了阅读性。 3.注意printf()函数中的“格式控制字符串”部分,area=为普通字符,所以会原样输出。 【实验2.3】整型变量的输出程序。 #include

实验2 顺序与分支汇编语言程序设计实验

ARM技术原理与应用 实验报告 实验2 顺序与分支汇编语言程序设计实验 专业电子信息工程 班级14电信班 学生姓名陈定光 学号2014010243101 指导教师曹计昌 2017年4月19 日

实验2 顺序与分支汇编语言程序设计实验 1、实验目的 (1)掌握顺序结构汇编语言程序设计; (2)掌握分支结构汇编语言程序设计; (3)掌握AXD环境下顺序结构和分支结构汇编语言程序的运行、调试。 2、实验要求 1、实验必须在在ADS1.2环境下进行。 2、工程名、汇编语言源文件名按照下面规则命名: 工程名:pj+学号最后4位+其它字符 汇编语言源文件名:p+学号最后4位+其它字符+.s 例如:张维智同学学号最后4位是3134 因此,pj3134、pj3134a、pj31341等都是允许的工程名;而 p3134a.s、p3134b.s等都是允许的源文件名。 3、实验报告中需要说明实验中在ADS、AXD环境下进行的实际操作; 4、实验报告中应给出实际的实验操作、编写的源程序、及计算机的调试观察结果; 5、按照规定格式打印实验报告。 3、实验内容 1、编写程序p2xxxx1.s完成下面任务: (1)将1、2、3、4、5、6、7、8依次传送给寄存器R1-R8; 分析:如上图显示,寄存器r1-r8分别是存放1-8 (2)用STMIA指令将R1-R8保存到刚好能够存储8个字数据ARY_A数组中。 分析:如上图显示,地址0x8058-0x8078分别存放1-8

(3)用STMIB指令将R1-R8保存到刚好能够存储8个字数据ARY_B数组中。 分析:如上图显示,地址0x8088-0x80A7分别存放1-8 (4)用STMDA指令将R1-R8保存到刚好能够存储8个字数据ARY_C数组中。 分析:如上图显示,地址0x8094-0x80B3分别存放1-8 (5)用STMDB指令将R1-R8保存到刚好能够存储8个字数据ARY_D数组中。

字符及字符串输入输出与顺序程序设计实验 实验报告

字符及字符串输入输出与顺序程序设计实验 实验报告 2.2.1 实验目的 1、学习和掌握字符及字符串的输入输出方法。 2、掌握顺序程序的设计方法。 3、进一步掌握调试工具的使用方法。 2.2.2 实验预习要求 1、复习DOS功能调用中用于字符输入(功能号01H)、字符输出(功能号02H)、字符串 输入(功能号为0AH)以及字符串输出(功能号09H)的调用方法(详见教材5.5.6)。 2、复习BCD码运算调整指令。 3、根据“2.2.3 实验内容”中给出的源程序框架编写完整的源程序,以便实验时调试。 4、从“2.2.4 实验习题”中任选一道题目,编写源程序,以便上机调试。 2.2.3实验内容 从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。1、问题分析 比如使用功能号为01H的用于实现单个字符输入的DOS功能调用接收从键盘输入的两个十进制数8和6,这时计算机内部得到的是这两个数的ASCII码值38H和36H。由于数字0 9的ASCII码值与其代表的数值之间相差30H,因此将其减去30H即可得到以非压缩型BCD数形式表示的十进制数08H和06H,使用ADD指令对它们进行相加后结果为0EH(00001110B),显然需要用非压缩型BCD数加法调整指令对ADD的运算结果进行调整,调整后得到两个非压缩型BCD数01H和04H,将它们分别加上30H后变为其对应的ASCII码31H(1的ASCII码)和34H(4的ASCII码),然后调用功能号为02H用于单个字符输出的DOS功能调用将它们显示出来。综上所述,需要考虑以下问题。 (1)从键盘输入一个一位十进制数的方法 通过功能号为1的DOS功能调用实现从键盘输入一个字符,格式如下:MOV AH, 01H INT 21H ;此时程序等待用户键入,键入字符的ASCII码值存在AL中 SUB AL, 30H ;减去30H后得到键入数字所代表的数值 (2)提示信息字符串的显示 通过功能号为9的DOS功能调用实现字符串显示,注意字符串的最后一个字符必需为’$’。指令格式如下: MOV DX, OFFSET INFOR1 ;INFOR1为在数据段中定义的要显示的字符串

字符及字符串输入输出与顺序程序设计实验

微机原理第二次试验字符及字符串输入输出与顺序程序设计实验 班级: 姓名: 学号: 日期:

字符及字符串输入输出与顺序程序设计实验 2.2.1 实验目的 1、学习和掌握字符及字符串的输入输出方法。 2、掌握顺序程序的设计方法。 3、进一步掌握调试工具的使用方法。 2.2.2 实验预习要求 1、复习DOS功能调用中用于字符输入(功能号01H)、字符输出(功能号02H)、字符串输入(功能号为 0AH)以及字符串输出(功能号09H)的调用方法(详见教材5.5.6)。 2、复习BCD码运算调整指令。 3、根据“2.2.3 实验内容”中给出的源程序框架编写完整的源程序,以便实验时调试。 4、从“2.2.4 实验习题”中任选一道题目,编写源程序,以便上机调试。 2.2.3实验内容 从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。 1、问题分析 比如使用功能号为01H的用于实现单个字符输入的DOS功能调用接收从键盘输入的两个十进制数8和6,这时计算机内部得到的是这两个数的ASCII码值38H和36H。由于数字0?9的ASCII码值与其代表的数值之间相差30H,因此将其减去30H即可得到以非压缩型BCD数形式表示的十进制数08H和06H,使用ADD指令对它们进行相加后结果为0EH(00001110B),显然需要用非压缩型BCD数加法调整指令对ADD的运算结果进行调整,调整后得到两个非压缩型BCD数01H和04H,将它们分别加上30H后变为其对应的ASCII码31H(1的ASCII码)和34H(4的ASCII码),然后调用功能号为02H用于单个字符输出的DOS功能调用将它们显示出来。综上所述,需要考虑以下问题。 (1)从键盘输入一个一位十进制数的方法 通过功能号为1的DOS功能调用实现从键盘输入一个字符,格式如下: MOV AH, 01H INT 21H ;此时程序等待用户键入,键入字符的ASCII码值存在AL中 SUB AL, 30H ;减去30H后得到键入数字所代表的数值 (2)提示信息字符串的显示 通过功能号为9的DOS功能调用实现字符串显示,注意字符串的最后一个字符必需为’$’。指令格式如下: MOV D X, OFFSET INFOR1 ;INFOR1为在数据段中定义的要显示的字符串 MOV AH, 09H INT 21H (2)非压缩型BCD数加法调整指令的使用 设从键盘输入的数值已存放在寄存器AL, BL中,可用下列程序完成数据相加和调整操作:XOR AH,AH ADD A L, BL AAA ;执行该指令后,AH中为和的十位上的数字,AL中为个位上的数字 请读者考虑,为什么要使用指令“XOR AH,AH”,不用行否? (3)计算结果的显示 执行完AAA指令后,只需分别将AH(十位上的数值)和AL(个位上的数值)加上30H,并依次调

实验二--顺序结构程序设计

实验二顺序结构程序设计 一、实验目的 学习汇编程序的编辑、宏汇编、连接命令用法,掌握数据传送指令和算术运算指令的用法;掌握数据定义伪指令的格式,会用DEBUG中的D命令观察数据段中的DB、DW、DD存储数据的格式及变法;熟悉汇编语言的基本框架,掌握编写汇编语言程序的基本方法。 二、示例 试问如下程序执行到exit时,字单元A、B、C、C+1、C+2中的内容各是什么? 源程序如下: data segment a d b 0 b db 0 c db 30H,40H,50H data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov al,c+1 add al,c mov a,al mov al,c+2 sub al,c+1 mov b,al add c,10h add c+1,20h mov al,a add c+2,al exit: mov ah,4ch int 21h

code ends end start 阅读以上程序,分析出结果,并上机验证。 (1)输入以上源程序,以2-1.ASM命名。 (2)用MASM 汇编2-1.ASM,生成2-1.OBJ文件。 (3)用LINK 连接2-1.OBJ,生成2-1.EXE文件。 (4)用DEBUG调试2-1.EXE文件,观测运行结果。 三、实验题 求表达式Y=A*X+B-C的值,已知A、B、C分别存放在DA-1、DA-2、DA-3字节单元,它们的值分别是:5 、 6、 7,X存放在INPUT字节单元,结果Y放入JSJ-10字单元。 要求:在DEBUG下多次修改X的值(分别为:1、2、3),观察执行结果Y; 四、实验报告 写出程序清单,记录运行结果;总结DEBUG中U、E、D、T、G命令的功能。

实验一顺序程序设计方案

实验一顺序程序设计 (一)实验目的 1、学习算术运算(加、减、乘、除)和扩展指令的用法; 2、掌握顺序程序结构和设计方法; 3、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。(二)实验设备 硬件环境:IBM-PC及其兼容机 软件环境:操作系统DOS上 编辑程序EDIT或其它编辑程序 汇编程序MASM.EXE 6.1X 连接程序LINK.EXE 调试程序https://www.360docs.net/doc/ad12941208.html, (三)实验内容和要求 实验内容: X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。试编写汇编语言程序完成以下功能: ①计算表达式值(V–(X*Y+Z-720))/X; ②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。 要求: ①编写出完整的汇编语言源程序,根据题目的需要建立相应的逻辑段(如程序段、数据段)。 ②可选用任何一种编辑程序在磁盘上建立一个源文件(扩展名为.ASM)。 ③用宏汇编程序MASM对源文件进行汇编,生成目标文件(扩展名为.OBJ)。 ④用连接程序LINK对目标文件进行连接,生成可执行程序.EXE文件。 ⑤用DEBUG调试程序对源程序进行动态调试。 (四)预习要求 1、复习掌握8086指令系统相关指令,按实验内容和要求预先编写好源程序; 2、熟悉在宏汇编程序MASM环境下,对源程序进行编辑、汇编、连接、运行。 3、进一步熟练用DEBUG对源程序进行动态调试,掌握一些常用的调试命令和方法。(五)实验步骤 1、启动DOS操作系统; 2、调用某种编辑程序,在磁盘上建立扩展名为ASM的源程序; 3、在DOS提示下,打入MASM调入宏汇编程序,用以对源程序进行汇编。设在磁盘上已建立了一个EXAMPLE.ASM源程序,操作如下所示: C:>MASM↙ Microsoft (R) Macro Assembler Version 5.00 Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved. Source filename [.ASM]:EXAMPLE↙ Object filename [EXAMPLE.OBJ]:↙ Source listing [NUL.LST]:EXAMPLE↙ Cross reference [NUL.CRF]:EXAMPLE↙ Warning Severe Errors Errors

C语言程序设计实验二 程序流程控制

实验二程序流程控制 一.实验目的及要求 1.进一步熟悉C语言的基本语句; 2.熟悉顺序结构程序设计结构; 3.熟悉选择结构程序设计结构; 4.熟悉循环结构程序设计结构; 5.结合程序掌握一些简单的算法。 二.实验内容及步骤 1.编写一程序:计算以r为半径的圆周长、圆面积、圆球表面积、圆球体积。其中r 从键盘输入,输出结果取小数点后两位数字并附上所求值的文字说明。 2.以下程序是交换变量a和b的值,请填空: #include main() { int a=4, b=8, temp; printf(“a=%d, b=%d\n”, a, b); ; ; ; printf(“a=%d, b=%d\n”, a, b); } (1)按题意将程序补充完整; (2)写出程序的运行结果; (3) 如果不增加变量temp能否设计出符合题意的程序?如果可以,写出改程序。 可以:横线部位改为 3. 分析如下程序的功能,然后输入一个3位数进行调试,看看分析的结果是否正确。 #include main() { int n, x1, x2, x3, y; printf(“Enter n:”);

scanf(“%3d ”, &n); x1=n/100; x2=n/10%10; x3=n%10; y= x3*100+ x2*10+ x1; printf(“y=%d ”, y); } 4. 编写如下问题的程序,然后按要求调试。 (1)有一分段函数 125 11031110 x x y x x x x main() { int i, n; for(n=2; n<=50; n++) { for(i=2; i<=(int)sqrt(n); i++) if(n%i==0) break; if(i==(int)sqrt(n)+1) printf(“%4d ”, n); } } (2) #include main() {

相关文档
最新文档