实验一 初级程序的编写与调试实验

实验一     初级程序的编写与调试实验
实验一     初级程序的编写与调试实验

实验一初级程序的编写与调试实验

一、实验内容

1.内存操作数及各种寻址方式使用

1MOV AX,1234

2MOV [1000],AX

3MOV BX,1002

4MOV BYTE PTR[BX],20

5MOV DL,39

6INC BX

7MOV [BX],DL

8DEC DL

9MOV SI,3

10MOV [BX+SI],DL

11MOV [BX+SI+1],DL

12MOV WORD PTR[BX+SI+2],2846

步骤:

(1) 用A命令键入上述程序,并用T命令逐条运行。

(2) 每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注

明是什么寻址方式。

注意D命令显示结果中右边的ASCII字符及双字节数存放法。

2.求累加和程序:

程序:

1MOV BX,1000

2MOV CX,10

3SUB AX,AX

4LOP:ADD AL,[BX]

5ADC AH,0

6INC BX

7J:LOOP LOP

8INT3

步骤:

(1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替;

(2)用命令N AA 将此程序命名为文件AA(文件名可任取);

(3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址;

(4)用命令W 100将此程序存到AA命名的磁盘文件中;

(5)用命令Q退出DEBUG;

(6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序;

若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入;

(7)用E命令在内存地址1000H处键入16个数字;

(8)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值;

(9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错;

(10)重复G、J与T,再检查AX是否正确;

(11)用G命令使程序运行到结束,检查AX值是否正确。

3.数据串搬家程序

(1)用A命令键入下列程序:

MOV SI,1000

MOV DI,1500

MOV CX,0FH

LOP:MOV AL,[SI]

MOV [DI],AL

INC SI

INC DI

LOOP LOP

INT 20

(2)用A命令DB伪指令在1000H键入下列字符串:‘IBM_PC COMPUTER'

(3)用G命令运行此程序,并用D命令检查目的地址处的字符与源串是否一致。

4.段寄存器概念及字符串传送指令练习

(1) 用A命令键入下列程序:

MOV SI,0

MOV DI,0

MOV AX,1000

MOV DS,AX

MOV AX,1500

MOV ES,AX

MOV CX,0F

CLD

REP MOVSB

INT 20

(2) 用A命令DB伪指令在1000:0000处键入字符串'IBM_PC COMPUTER',并用D命检查之

(3) 用D命令检查0F00:1000处内容,看是否一样。为什么?

(4) 用G命令运行此程序,检查目的地址1500:0000处内容。并记下DS与ES值。

(5) 修改此程序,使ES与DS为同一值,以减少一条指令,而源物理地址和目的物理地址(是多少?)仍和原来一样。

5.利用INT 21 0AH号功能调用显示字符串。

(1)用A命令在100H处键入下列程序:

MOV AH,9

MOV DX,110

INT 21

INT 20

(2)用A命令在110H处键入下列字符串的ASCII码:

DB 'This is a sample!$'

(3)用N命令和W命令将此程序(包括数据区)存入文件名为AA.OM的磁盘文件中。(存入前BX:CX必须置为文件长度值)。

(4)用Q命令退出DEBUG。

(5)在DOS命令下打AA,运行此程序,即在屏幕上显示'This is a sample!'字符串,若不出现,用DEBUG检查程序有无错误。

6.利用INT 21H 2号功能显示字符

(1)用A命令在100H处键入下列程序:

XOR DL,DL

MOV CX,100

LOP:MOV AH,2

INT 21

INC DL

PUSH CX

MOV CX,8

DELY:PUSH CX

MOV CX,0

J:LOOP J

POP CX

LOOP DELY

POP CX

LOOP LOP

INT 20

(2)用G命令运行程序,即在屏幕上依次缓慢的显示256个ASCII字符。仔细观察每个字符,和IBM-PC ASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同?

(3)按CTRL+BREAK退出此程序,若一次不行可多做几次。

7.直接向VRAM送ASCII码显示字符

(1)用A命令在100H处键入下列程序

MOV AX,B000

MOV DS,AX

XOR AL,AL

XOR BX,BX

MOV CX,100

LOP:MOV [BX],AL

INC BX

INC AL

PUSH CX

MOV CX,8

DELY:PUSH CX

MOV CX,0

J:LOOP J

POP CX

LOOP DELY

POP CX

LOOP LOP

INT 20

(2)用N命令和W命令将此程序存入https://www.360docs.net/doc/4c7931355.html,文件中。(一定要先存入!)

(3)用G命令运行此程序,仔细观察每一个ASCII码显示结果,并和字符表及上一道程序运行情况进行对照,其控制字符区(07-0DH)显示结果和INT 21H2号功能调用有何不同?

二、思考题

1.MOV BYTE PTR[BX],20

MOV WORD PTR[BX+SI+2],2846

上述指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。

2.将多字节加法程序中的INT 20H指令改为INT 3,有何区别?若这条指令不加,行不行?试一试。

3.数据串搬家程序中的目的地址改为1002H,再运行此程序,看能不能把1000H开始的字符串搬到1002H开始的地方去?修改程序以做到这一点。

4.利用INT 21H 显示和直接向VRAM送ASCII码显示方法在显示结果上有什么不同? 三.实验报告要求

1.各项实验记录;

2.要求你修改的程序的清单(修改后)和调试记录;

3.自编程序原稿及调试后修正稿,写出原稿错在那里。

程序设计基础实验指导书

说明 每个实验做完以后,按照实验报告模板格式完成相应的实验报告,存储为word 文档,最终提交的实验文档数量种类和命名原则如下例:(不按要求 者拒收) 目录结构图目录实验 1 内的文件种类和命名原则实验报告成绩将作为平时成绩的一部分计算到期末总成绩中。 实验报告严禁相互抄袭,一经发现抄袭和被抄袭者本次实验按零分计算!

实验1 C 的实验环境和C 语言的数据类型 1. 实验目的 ⑴ 了解在具体的语言环境下如何编辑、编译、连接和运行一个C 程序。 ⑵ 通过运行简单的C 程序,初步了解C 源程序的特点。 ⑶ 掌握C 语言数据类型, 熟悉如何定义一个整型、字符型和实型的变量,以及对它 们赋值的方法。 ⑷ 掌握不同的类型数据之间赋值的规律。 ⑸ 学会使用C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+ +)和自减(--)运算符的使用。 2. 实验内容和步骤 检查所用的计算机系统是否已安装了C 编译系统并确定他所在的子目录。 进入所用的集成环境。 熟悉集成环境的界面和有关菜单的使用方法。 输入并运行一个简单的、正确的程序。 3. 实验题目 输入下面的程序 # include "stdio.h" void main() { printf( "This is a c program.\n" ); } 程序无误,其运行的结果为:(请填写) ⑵ 输入并编辑一个有错误的 C 程序。 # include “ stdio.h ” void main() { int a,b,sum a=123; b=456; sum=a+b print( “ suism%d n” ,sum); } 运行后程序出现几处错误,请分别指出,并逐一更改: ⑶ 若k,g 均为int 型变量, 则下列语句的输出为, : # include "stdio.h" void main() { int k, g; k=017; g=111;

程序设计基础实验内容

实验指导 实验一 Visual C++开发环境使用 1.实验目的 (1)熟悉Visual C++集成开发环境。 (2)掌握C语言程序的书写格式和C语言程序的结构。 (3)掌握C语言上机步骤,了解C程序的运行方法。 (4)能够熟练地掌握C语言程序的调试方法和步骤 2. 实验内容 输入如下程序,实现两个数的乘积。 #include ; int main() { x=10,y=20 p=prodct(x,t) printf("The product is : ",p) int prodct(int a ,int b ) int c c=a*b return c } (1)在编辑状态下照原样键入上述程序。 (2)编译并运行上述程序,记下所给出的出错信息。 (3)再编译执行纠错后的程序。如还有错误,再编辑改正,直到不出现语法错误为止。3.分析与讨论 (1)记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论成功或失败的原因。 (2)总结C程序的结构和书写规则。 实验二数据类型、运算符和表达式 1.实验目的 (1)理解常用运行符的功能、优先级和结合性。 (2)熟练掌握算术表达式的求值规则。 (3)熟练使用赋值表达式。 (4)理解自加、自减运算符和逗号运算符 (5)掌握关系表达式和逻辑表达式的求值 2.实验内容 (1)整数相除 #include<> int main() {

int a=5,b=7,c=100,d,e,f; d=a/b*c; e=a*c/b; f=c/b*a; printf("d=%d , e=%d ,f=%d\n",d,e,f); return 0; } (2)自加、自减运算 #include<> int main() { int a=5,b=8; printf("a++=%d\n",a++); printf("a=%d\n",a); printf("++b=%d\n",++b); printf("b=%d\n",b); return 0; } (3)关系运算和逻辑运算 #include<> int main() { int a=5,b=8,c=8; printf("%d,%d,%d,%d\n",a==b&&a==c,a!=b&&a!=c,a>=b&&a>=c,a<=b&&a<=c); printf("%d,%d\n",a<=b||a>=c,a==b||b==c); printf("%d,%d,%d,%d\n",!(a==b),!(a>=b),!(a>=c),!(a<=b)); return 0; } (1)在编辑状态下输入上述程序。 (2)编译并运行上述程序。 3.分析与讨论 (1)整数相除有什么危险?应如何避免这种危险? (2)分析a++和++a的区别。 (3)条件表达式和逻辑表达式的意义是什么,它们取值如何? (4)如何比较两个浮点数相等?为什么? 实验三格式化输入输出函数的使用 1.实验目的 (1)掌握格式字符使用的方法。 (2)掌握printf()进行格式化输出的方法。 (3)掌握scanf()进行格式化输入的方法。 2.实验内容 (1)输入如下程序,观察运行结果 #include<>

大全程序调试实验报告

微机原理与接口技术 课 程 作 业 班级: 目录

一、实验目的: 汇编语言是一种用助记符表示的程序设计语言。用汇编语言编写的源程序生成的目标代码短,占内存少,执行速度快,适合于系统软件、实时控制软件、I/O接口驱动等程序设计。通过本次实验,熟练掌握汇编程序的调试,深入了解MASM汇编语言及其程序设计方法。 二、实验环境 EDIT编辑器、MASM汇编程序、LINK连接程序、TD调试程序 三、实验过程 (一)基础知识储备 1.了解微处理器80486的内部结构、寄存器组、工作模式等基本知识。 2.熟练掌握微处理器指令系统的相关知识,重点掌握80486的寻址方式和常用的指令格式及功能。 3.了解MASM汇编语言及其程序设计方法。掌握MASM汇编语言的语句格式、语法规则、常用伪指令及DOS功能的调用等。了解顺序结构、分支结构、循环结构和子程序的设计方法。 (二)汇编语言程序设计 1.分析问题,明确要解决的问题和要求。 2.确定解决问题的思路和方法。 3.将解决问题的方案编制成程序流程图。 4.根据流程图,逐条编写程序。 5.上机调试,验证程序是否正确。 (三)汇编程序调试 MASM汇编程序的主要功能是:把源文件转换成用二进制代码表示的目标文件,并生成列表文件;在转换过程中汇编程序将对源程序进行扫描,检查源程序是否有语法错误并指出源程序的语法错误。

汇编语言源程序的调试过程需要经过编辑、汇编、连接、运行、调试等几个步骤: 1.编辑:使用编辑程序,将编写好的程序输入计算机,建立一个扩展名为ASM的汇编语言源文件*.ASM。 2.汇编:使用汇编程序,将*.ASM文件经汇编后生成扩展名为*.OBJ。 3.连接:使用连接程序,把一个或多个目标程序连接成可执行文件*.EXE。 4.运行:运行可执行文件,验证程序是否正确。 5.调试:如果运行中有问题,可使用编辑或调试程序进行修改和调试,重复上述步骤,直到运行正确为止。 四、调试实例 (一)实例一 要求:编写程序,将MBUF为起始单元的5个数按相反次序传送到NBUF开始的存储单元中。 实验思路:本例采用顺序结构和循环结构,合理利用堆栈,通过堆栈实现数据按照相反次序传送。源程序: DATA SEGMENT ;数据段开始 MBUF DB 0,1,2,3,4 ;每个数据分配一个存储单元 NBUF DB 5 DUP(0) ;空5个存储单元备用 DATA ENDS ;数据段结束 STACK SEGMENT PARA STACK ;堆栈段开始,定位类型是PARA DB 100 DUP(0) STACK ENDS CODE SEGMENT ;代码段开始 ASSUME CS:CODE, DS:DATA,SS:STACK ;段分配伪指令 START: MOV AX,DATA ;数据传送 MOV DS,AX ;存储器数据传送到段寄存器中 MOV SI,OFFSET MBUF ;取第一组操作数的偏移地址 MOV DI,OFFSET NBUF ;取第二组操作数的偏移地址 MOV CX,5 ;数据个数5传送到CX中 LOP1: MOV AX,[SI] ;数据传送 PUSH AX ;数据入栈 INC SI ;指针加1 LOOP LOP1 ;循环 LOP2: POP AX ;数据出栈 MOV [DI],AX ;数据传送 INC DI LOOP LOP2 MOV AH,4CH ;终止进程 INT 21H CODE ENDS END START

程序设计基础实验报告

《程序设计基础》 实验报告 专业班级: 姓名: 学号:

实验一 面向过程的简单程序设计 1.实验目的要求 (1) 使用C++语言编写简单的计算机程序,掌握C++程序从编辑、编译到运行的全过程, 初步了解C++程序的特点。 (2) 掌握C++语言的数据类型(包括对各种数据类型变量的定义、初始化、赋值等)、运 算符和表达式的使用。 (3) 掌握赋值语句的使用。 (4) 掌握数据的输入输出方法。 2.实验内容 (1)设计简单程序,分别计算下列表达式,式中变量由键盘输入,输出表达式的值。 <1> d c b a x -++ <2> 11 11+++x x <3> sinX+cosX+tan -1 X <4> e x+y +e x-y <5> log 10(1+21x +) <6> 22b a -+??b a - (其中??a 表示取不大于a 的最大整数)。 <1> #include using namespace std; int main() { float x,a,b,c,d,e; cin>>x>>a>>b>>c>>d; e=x+(a+b)/(c-d); cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=sqrt(1+1/(x+1/(x+1)));

cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=sin(x)+cos(x)+1/tan(x); cout< #include #include using namespace std; int main() { double x,y,z; cin>>x>>y; z=exp(x+y)+exp(x-y); cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=log(1+sqrt(1+x*x)); cout< #include #include using namespace std; int main()

实验1 初级程序的编写与调试实验 (2)

南昌大学实验报告 学生姓名:学号:专业班级:电Ⅲ106 实验类型:■验证□综合□设计□创新实验日期:2011.10.27 实验成绩:实验1 初级程序的编写与调试实验(一) 一.实验目的 1.熟悉DEBUG命令;学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。对于U命令、N命令、W命令等,也应该试用一下; 2.掌握数据在内存中的存放方式和内存操作数的几种寻址方式,段寄存器和物理地址计算; 3.熟悉数据传送指令、算术运算指令、逻辑指令、循环指令的使用。 4.掌握简单的汇编语言程序编写与调试。 二.实验内容 1.内存操作数及各种寻址方式使用; 2.求累加和程序; 3.多字节加法程序; 4.数据串搬家程序; 5.段寄存器概念及字符串传送指令练习。 三.实验要求 1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子; 2.阅读数据传送指令、算术运算指令、逻辑指令、循环指令的使用方法 3.用DEBUG的有关命令调试本实验中的求累加和程序、多字节加法程序、程序段四.实验环境 PC微机; DOS操作系统或Windows 操作系统; MASM.EXE,LINK.EXE,https://www.360docs.net/doc/4c7931355.html,或宏汇编集成环境。 五.实验步骤 1.内存操作数及各种寻址方式使用 MOV AX,1234 ;立即寻址方式 MOV [1000],AX MOV BX,1002 ;立即寻址方式 MOV BYTE PTR[BX],20 MOV DL,39

INC BX MOV [BX],DL DEC DL MOV SI,3 MOV [BX+SI],DL MOV [BX+SI+1],DL MOV WORD PTR[BX+SI+2],2846 步骤: (1) 用A命令键入上述程序,并用T命令逐条运行。 (2) 每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。 注意D命令显示结果中右边的ASCII字符及双字节数存放法。

大学程序设计基础实验报告 (2)

**大学程序设计基础实验报告 实验名称:实验三分支结构 实验目的: 1、掌握IF-ELSE语句使用。 2、掌握ELSE-IF语句使用。 3、熟悉SWITCH语句使用。 实验内容: 在本地电脑中新建一个文件夹,用于存放C程序,文件夹的名字要求是“学号姓名-实验序号”,如E:\ 1920115555张三-03。启动C-Free,完成如下各题。 1、编程题:输入参数a,b,c,求一元二次方程ax2+bx+c=0的根(①a、b、c都为0,②a 和b为0,c不为0,③a为0,b不为0,c任意,④a不为0,且a、b、c满足b2-4ac ≥0,⑤a不为0,且a、b、c满足b2-4ac<0)。 2、编程题:输入职工的月薪salary,计算并输出应缴纳的个人所得税tax。tax=rate * (salary –850),rate的计算方式如下: 当salary <= 850,则rate = 0; 当850 < salary <= 1350,则rate = 5%; 当1350 < salary <= 2850,则rate = 10%; 当2850 < salary <= 5850,则rate = 15%; 当salary > 5850,则rate = 20%;。 3、编程题:根据输入的3个边长a、b、c,判断它们是否能构成三角形,若能构成三 角形,则进一步判断此三角形是哪种类型的三角形(等边三角形、等腰三角形、直角三角形和一般三角形。等腰直角算作等腰)。 4、编程题:输入一个形式如“操作数运算符操作数”的表达式,对2个整数进行乘、 除或求余运算。【请分别用if语句和switch语句实现此题功能】 上交作业的方法: 1.将程序代码及注释和运行程序的窗口复制到实验结果下方对应的题号上,并把这 次实验上机操作中遇到的问题及解决方法、心得等填好完成实验报告。 2.保存以上所有按要求已调试通过,并形成.c(或.cpp)和.exe文件到以自己的“学 号姓名-03”命名的文件夹中,并将以自己的“学号姓名”命名的文件夹压缩后上 交到ftp://10.172.250.252:1161中的“作业上传”文件夹下的“报告上交02”文件 夹下的子文件夹“源文件压缩上交”中,同时把以“学号姓名-03”命名的word 文档上交到“报告上交03”文件夹下的另一子文件夹“word文件上交”中。 特别提醒:每次上传的文件名一定要是“学号姓名-实验序号. doc”(如1720115555张

C语言程序设计基础实验报告3【VIP专享】

实验3 逻辑结构程序设计一、实验目的 1、了解C 语言表示逻辑量的方法(以0代表“假”,以非0代表“真” )。 2、学会正确使用逻辑运算符和逻辑表达式。 3、熟练掌握if 语句和switch 语句。 4、结合程序掌握一些简单的算法。 5、学习调试程序。 二、实验内容和步骤 本实验要求事先编好解决下面问题的程序,然后上机输入程序并调试运行程序。 1、改错题。给定程序MODI1.C 的功能是:对于如下函数: 用scanf 函数输入x 的值,求y 值。/* MODI1.C */#include void main() { int x, y; /***********found***********/ scanf ("%d", &x);if ( x < 1 )y = x; /***********found***********/else if ( 1 <=x&& x < 10 ) y = 2*x -1 ; else y = 3*x -11; printf("y = %d\n", y ); } 程序中有两处错误,错误都在提示行: /***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。注意:不要随意改动程序,不得增行或删行,也不得更改程序的结构! 修改程序后,运行程序,输入x 的值(分别为x<1、1≤x<10、x ≥10三种情况,如0.5、8、15),检查输 出的y 值是否正确。 ?? ? ??≥-<≤-<=)10(113) 101(12)1(x x x x x x y

2、从键盘输入某学生的考试成绩,要求输出成绩等级A 、B 、C 、D 、E 。学生的成绩可分成5个等级,90- 100分为A 级,80-89分为B 级,70-79分为C 级,60-69分为D 级,0-59分为E 级。要求在输入负数时, 给出错误提示。 ① 事先编好程序,要求分别用if 语句和switch 语句实现。运行程序,并检查结果是否正确。 ② 再运行一次程序,输入分数为负值(如-70),这显然是输入时出错,不应给出等级。修改程序,使之 能正确处理任何数据。当输入数据大于100或小于0时,通知用户“输入数据错”,程序结束。 3、给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位 数字,例如:原数据为321,应输出123。(BX4.6) 分别用1位正整数、2位正整数、3位正整数、4位正整数、5位正整数作为测试数据进行测试。 除此之外,程序还应当对不合法的输入作必要的处理。例如:当输入负数时或输入的数超过5位(如123 456)数时。4、输入3 个整数,要求按由小到大的顺序输出。

实验一 顺序程序设计

实验一顺序程序设计 一、实验目的: 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中

实验二_指令系统相关程序的编写与调试实验

重庆大学 学生实验报告 实验课程名称汇编语言程序设计 开课实验室DS1502 学院软件学院年级16专业班软件工程5班 学生姓名吉沼橙学号20161717 开课时间2017至2018学年第 1 学期 软件工程学院制

《汇编语言程序设计》实验报告

Add sp,4 Pop ax Pop bx Push ax Push bx Pop ax Pop bx Mov ah,4ch Int 21h Code ends End start 先转换成asm格式 然后转换成obj格式

然后转换成exe格式 (2)用debug跟踪lab2.exe 的执行过程,写出每一步执行后,相关寄存器中的内容和栈顶的内容。开始每一步的执行: 1:AX=2000 2:SS=2000 3:SP=0004 4: AX=0000 SP=0006 5: BX=0000 SP=0008 6.7:AX与BX入栈SP由0008到0004 8:AX与BX出栈SP由0004到0008

(5)习题:3.37 -教材114页。 MOV AL, STATUS AND AL, 00010101B ;只保留第1、3、5位 CMP AL, 00010101B JZ ROUTINE_1 ;3位全为1转ROUTINE_1 JZ ROUTINE_2 ;两位为1转ROUTINE_2 JZ ROUTINE_3 ;1位为1转ROUTINE_3 JZ ROUTINE_4 ;3位全为0转ROUTINE_4 ROUTINE_3: JMP EXIT ROUTINE_1: JMP EXIT ROUTINE_2: JMP EXIT ROUTINE_4: EXIT: INT 21H

实验二选择结构程序设计实验报告

实验二选择结构程序设计 一、实验目的和要求 1.掌握关系表达式和逻辑表达式的使用。 2.熟悉选择结构程序设计。 3.熟练使用if语句进行程序设计。 4.使用switch语句实现多分支选择结构 二、实验设备 PC 机Visual C++6.0 三、实验内容 (一)实验准备 1.从程序流程的角度来看,程序可以分为三种基本结构,即顺序结构、分支(选择)结构、循环 结构。 2.lf-else 语句: 一般形式为:if (表达式) 语句1 ; else 语句2 ; 该语句用于实现分支结构,根据表达式的值选择语句1或语句2中的一条执行。首先求解表达式,如果表达式的值为“真”,则执行语句1;如果表达式的值为“假”,则执行语句 2. 2.switch 语句 switch语句可以处理多分支选择问题,根据其中break语句的使用方法,一般分为三种情况。 (二)实验项目 1.计算a+|b| #in clude int main (void) { int a,b, z; prin tf("Please en ter a,b:\n"); sca nf("%d,%d",&a,&b); if (b>=0)t b=b; prin tf("%d+%d=%d\n",a,b,z); return 0 ; } 2判断一个整数是否可以被3和5整除

#in clude int main (void) { int a ; printf("Please enter a:\n"); scanf("%d",&a); if (a%3==0){ printf("a 可以被 3 整除:\n"); } else{ if (a%5==0){ printf("a 可以被 5 整除:\n"); } else { printf("a 不可以被5整除,也不可以被3整除:\n"); } } 3.从键盘输入一个字符型数据,若输入一个数字字符( '0'-'9' ),则将其转换成相应的整数显示出来;若输入其它字符,则显示出错信息。 #include int main(void) { int a ; printf("please enter a char:\n"); scanf("%d",&a); if((0<=a)&&(a<=9)) { printf("This char is %d:\n",a); } else { printf(" 这个字符不是个整数:\n"); } return 0 ; } 4.编写一个程序,其功能为:从键盘输入三个数x、y、z ,判断x+y=z 是否成立,若成立输出 “x+y=z” 的信息,否则输出“ x+y!=z ”的信息。 #include int main(void) { int x,y,z; printf (" 请输入x,y,z:\n"); scanf ("%d,%d,%d",&x,&y,&z); if (x+y==z) { printf ("x+y=z\n"); } else { printf ("x+y!=z\n"); } return 0; } 5.编写一个程序,其功能为:输入三个整数,输出最大数和最小数#include int main(void) { int a,b,c,x,y; printf (" 请输入三个数字:\n"); scanf ("%d,%d,%d",&a,&b,&c);

c语言程序的创建与调试

目录 ?创建一个新的 C 语言的工程(查看) ?添加一个文件到一个空的工程中(查看) ?编写程序(查看) ?运行程序(查看) ?调试程序 - 设置断点(查看) ?调试程序 - 动态察看变量的值(查看) 创建一个新的 C 语言的工程 第一步,启动 Microsoft Visual C++ 6.0 启动 VC 可以通过“开始”菜单,也可以通过桌面快捷方式,或者 Quick Launch 工具栏等方式。

启动之后,我们看到的是空白的 VC 开发环境。虽然上面的截图是英文版的VC,但是其中的菜单、窗口都和中文版的一一对应。 跟大多数的 Windows 应用程序一样,VC 最上面是菜单,然后是工具栏,中央是工作区,最下面一行是状态栏。我们现在看到的工作区,左边是 Workspace 窗口,右边是灰底的空白窗口。 第二步,创建一个工程 在 VC 中,一个源程序文件必须属于一个工程;所以我们首先来创建一个工 程。

选择菜单: File --> New... 打开下面窗口: 在 Projects Tab 页面中,我们看到可以创建许多种类型的工程;并且可以指定工程的名字,和存储位置。 事实上如果要开发简单的 C 语言程序,我们只需要创建一种工程:Win32 Console Application,也就是 Windows 32 控制台程序,或者俗称“黑屏”程序。我们进行如下设置:

第三步,修改新工程的配置 作为 Win32 Console Application 类型的程序,只有一个配置界面,如下面所示。如果选择其他类型的应用程序,可能会有多个配置界面。 在这里我们选择第一个选项,也就是默认选项: An empty project. (一个空的工程) 然后选择完成。点击: Finish (完成) 按钮。我们的这个选项将创建一个空的工程;其他的选项将自动生成一些源代码文件。就计算机等级考试的要求来说,VC 自动生成的源代码文件对于我们没有帮助。 第四步,确认创建新工程

C语言程序设计基础实验报告6【VIP专享】

实验6 数组 一、实验目的 1、掌握一维数组和二维数组的定义、赋值和输入输出的方法; 2、掌握字符数组和字符串函数的使用; 3、掌握与数组有关的算法(特别是排序算法)。 二、实验内容和步骤 编程序并上机调试运行。 1、以下给定程序MODI1.C的功能是: 求一维数组a中所有元素的平均值, 结果保留两位小数。例如,当一维数组a中的元素为:10, 4, 2, 7, 3, 12, 5, 34, 5, 9时,程序的输出应为:The aver is: 9.10 程序中有两处错误,错误都在提示行:/***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。 注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构! #include #include void main() { int a[10]={10,4,2,7,3,12,5,34,5,9}, i; /************found************/ /************found************/ s = a[0]; for ( i=1; i<10; i++) s += a[i]; aver = s / i; printf("The aver is: %.2f\n", aver); } 2、以下给定程序MODI1.C的功能是:求二维数组a中的最小值。 例如,当二维数组a中的元素为: 4 2 34 7 3 12 5 6 5 程序的输出应为:The min is: 2 。 程序中有两处错误,错误都在提示行:/***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。 注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构! #include #include void main() { int a[3][3]={4,2,34,7,3,12,5,6,5}, i, j, min; clrscr();

程序设计基础实验内容

实验指导 实验一 Visual C++6.0开发环境使用 1.实验目的 (1)熟悉Visual C++6.0集成开发环境。 (2)掌握C语言程序的书写格式和C语言程序的结构。 (3)掌握C语言上机步骤,了解C程序的运行方法。 (4)能够熟练地掌握C语言程序的调试方法和步骤 2. 实验内容 输入如下程序,实现两个数的乘积。 #include (stdio.h); int main() { x=10,y=20 p=prodct(x,t) printf("The product is : ",p) int prodct(int a ,int b ) int c c=a*b return c } (1)在编辑状态下照原样键入上述程序。 (2)编译并运行上述程序,记下所给出的出错信息。 (3)再编译执行纠错后的程序。如还有错误,再编辑改正,直到不出现语法错误为止。3.分析与讨论 (1)记下在调试过程中所发现的错误、系统给出的出错信息和对策。分析讨论成功或失败的原因。 (2)总结C程序的结构和书写规则。 实验二数据类型、运算符和表达式 1.实验目的 (1)理解常用运行符的功能、优先级和结合性。 (2)熟练掌握算术表达式的求值规则。 (3)熟练使用赋值表达式。 (4)理解自加、自减运算符和逗号运算符 (5)掌握关系表达式和逻辑表达式的求值 2.实验内容

(1)整数相除 #include int main() { int a=5,b=7,c=100,d,e,f; d=a/b*c; e=a*c/b; f=c/b*a; printf("d=%d , e=%d ,f=%d\n",d,e,f); return 0; } (2)自加、自减运算 #include int main() { int a=5,b=8; printf("a++=%d\n",a++); printf("a=%d\n",a); printf("++b=%d\n",++b); printf("b=%d\n",b); return 0; } (3)关系运算和逻辑运算 #include int main() { int a=5,b=8,c=8; printf("%d,%d,%d,%d\n",a==b&&a==c,a!=b&&a!=c,a>=b&&a>=c,a<=b&& a<=c); printf("%d,%d\n",a<=b||a>=c,a==b||b==c); printf("%d,%d,%d,%d\n",!(a==b),!(a>=b),!(a>=c),!(a<=b)); return 0; } (1)在编辑状态下输入上述程序。 (2)编译并运行上述程序。 3.分析与讨论 (1)整数相除有什么危险?应如何避免这种危险? (2)分析a++和++a的区别。 (3)条件表达式和逻辑表达式的意义是什么,它们取值如何? (4)如何比较两个浮点数相等?为什么? 实验三格式化输入输出函数的使用 1.实验目的

实验一简单程序设计实验

实验一:简单程序设计实验 (1)编写一个 32 位无符号数除法的程序,要求将存放在 NUM1 中的 32 位无符号数与存放 在 NUM2 中的 16 位无符号数相除,结果存放在 NUM3 和 NUM4 中。 程序流程图略。 参考源程序: DATA SEGMENT NUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ? NUM4 DW ? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA ;数据段寄存器初始化 MOV DS,AX MOV AX, WORD PTR NUM1 MOV DX, WORD PTR NUM1+2 DIV NUM2 MOV NUM3,AX MOV NUM4,DX MOV AH,4CH ;正常返回DOS 系统 INT 21H CODE ENDS END START (2)编写一个拆字程序。要求将存放在 ARY 单元的 2 位十六进制数 X 1X 2 拆为 X 1 和 X 2 两 部分,并以 0X 1 和 0X 2 的形式分别存入 ARY+1 和 ARY+2 单元中。 程序流程图略。 参考源程序: DATA SEGMENT ARY DB 2AH,?,? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET ARY ;取ARY 的偏移地址 MOV AL,[SI] ;取16进制数至AL

MOV BL,AL AND AL,0F0H ;取16进制数的高四位,即X1 SHR AL,4 MOV [SI+1],AL ;存0X1 MOV AL,BL AND AL,0FH ;取16进制数的低四位,即X2 MOV [SI+2],AL ;存0X2 MOV AH,4CH INT 21H CODE ENDS END START

Visual C++ 6.0编写、调试和运行C程序流程

步骤01:打开Visual C++6.0界面(如下图)

如果是已经打开的界面,想重新开始一个新的工程,则可按下述方式进行: 1)单击关闭工作空间菜单项(如下图) File->Close Workspace(或“文件”->“关闭工作空间”) 2)在弹出的“确认”窗口中单击“Yes”(或“是”)。表明要关闭工作空间时也同明关闭所有已打开的文件。(如下图)

步骤02:往工程里添加后缀名为“.c”的文件,并往文件里写入C程序 1)File->New(也可能是中文的菜单项名) 2)在弹出的对话框中选择Files页面。在文件类型列表中,①鼠标左键单击选中“C++Source File”类型的文件;②File下面的文本框中,键入文件的名称,可以任意命名,但后缀名必须是“.c”,别忘记了!!!!!!!③Location下面是选择将新建的文件放到哪个目录下面,可以让VC6.0自动设定,不必操劳。一切准备停当后,单击OK

3)写C程序 现在,就可以往新建的文件上写C程序了(此例文件是Test.c) 注意:Visual C++ 6.0这个编写C程序的集成开发环境(IDE)工具有一些外挂的辅助工具(如现示代码的行号等…),微软出品的原生版本并不带有外挂工具,如果同学们自已安装的Visual C++6.0跟这个文档中的图片显示得不一样,是因为我的Visual C++ 6.0装了一些自已从网路上下载的外挂辅助工具。当然,没有这些工具,照样可以很顺利地编写C语言程序。

步骤04:编写->编译->连接->运行C 语言程序 1)如下图所示几个与运行相关按钮说明注意:程序运行的流程是:编写->编译->连接->运行。“运行”阶段之前的各个阶段只要有一个出错,就无法运行。如果直接点击“惊叹号”的运行按钮,有可能会提示前面的“编译”和“连接”过程并未被经过,因而没有生成可执行程序,如此下图: 单击“是”就可以了。 以上说明也昭示了这样一个现象:编写好的C 程序不一定编译就通过;编译通过的C 程序不一定就连接通过;编写、编译、连接都通过的C 程序也不一定在运行时就能完全满足编写者的意愿。所以,错误是再所难免的,要多练习如何调试程序。 2)运行的结果窗口:其中的“Press any key to continue”是Visual C++6.0自已输出的,诣在提醒程序已运行完成,按下键盘上的任意键返回Visual C++6.0 的程序编写界面。编译按钮,只编译,不连接,不运行 编译+连接按钮, 英文名叫Build, 它生成可执行程 序,但是不包运行 “惊叹号”是编 译+连接+运行 按钮。直接就包 括了前两个按钮 的功能

计算机程序设计基础实验12个实验

《计算机程序设计基础》实验教学 大纲 课程编号:1303072 实验学时:24课程学分:3.5 课程类型:必修教学对象:全校各非计算机专业先修课程: ㈠实验目的与要求  本实验课程面向文法学院学生,通过本课程的学习与实验,使学生了解程序设计的一些基本概念,掌握计算机程序设计的一般方法,具备使用计算机解决实际问题的初步能力。 在实验教学中提倡“实验前要准备,实验中要认真,实验后要总结”;突出上机实践操作环节,强调在教师指导下的以学生为中心完成每次上机的具体内容和要求;对于普遍问题采用领练、辅导有机

结合的方法;尽量采用 CAI 辅助教学软件。 通过实验教学使学生能够建立计算机程序设计的基本概念;在简单的程序设计过程中掌握Visual Basic可视化设计的步骤,逐步搞清什么是对象、对象的属性以及事件和方法等重要概念。在此基础上,掌握程序设计的3种基本结构。 ㈡实验考核方式与成绩评定方法考核方式: 1.考核学生每次实验完成情况; 2.考核学生的计算机基本操作能力; 3.上机考试 成绩评定:学生应按照每次实验的要求,完成指定的实验任务,并按要求提交实验报告和实验文件,成绩评定由实验指导教师根据学生实验完成情况按照优秀、良好、中等、合格、不合格五个等级给出,实验成绩占20%计入学生课程成绩。  本学期需上交实验报告为三次,实验报告实验要求用本校实验报告册书写。要求填写学号、班级、姓名、实验指导老师、实验日期,报告内容包括实验名称、实验目的、实验内容、详细操作步骤及结果,最好写出自己的上机体会和总结。

㈢ 实验项目设置 根据教学内容和实验教学目的,共设4个实验项目: 项目一,认识Visual Basic,包括2个实验; 项目二,程序设计基础,,包括6个实验; 项目三,常用控件及界面设计,包括2个实验;项目四,文件管理,包括1个实验; 总的实验数为12个实验。 实验项目名称实验内容与学时分配总学时 数 认识Visual Basic 1.Visual Basic 程序设计环 境 2.窗体和最基 本控件 4 程序设计基础1.数据类型及函数 2.顺序程序设计 3.分支结构程序设计4.循环结构程序设计5.数组 6.过程 12 常用控件及界面设计1.常用标准控件 2.界面设计 4 文件管理1.文件管理2

实验二、基本程序结构设计

实验报告 课程名称微机接口与汇编语言 实验项目实验二 基本程序结构设计 实验仪器 TPC-USB通用微机接口实验系统 系别计算机学院 专业 班级/学号 学生姓名 实验日期 成绩 指导教师胡信裕

一、实验目的 1. 学习汇编程序设计的基本方法,掌握用汇编语言设计、编写、调试和运行程序的方法; 2. 进一步熟悉TPC-USB通用微机接口实验系统的使用操作; 3. 熟悉、掌握顺序结构、分支结构、循环结构程序设计和调试。二.实验设备 1.PC微机系统一套 2.TPC-USB通用微机接口实验系统一套 三.实验要求 1.实验前要作好充分准备,包括程序框图、源程序清单、调试步骤、测试方法、对运行结果的分析等。 2.熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)使用方法。在程序调试过程中,有意识地了解并掌握TPC-USB通用微机接口实验系统的软硬件环境及使用,掌握程序的调试及运行的方法技巧。 3.实验前仔细阅读理解教材相关章节的相关内容,实验时必须携带教材及实验讲义。 四.实验内容及步骤 (一) 程序设计 1.按图1虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。 图1 实验连接参考电路图之一

2. 按图2连接电路,将计数器0、计数器1分别设置为方式3,计数初值均设为1000,用逻辑笔观察OUT1输出电平的变化(OUT1输出频率应为1Hz)。 图2 实验连接参考电路图之二 3. 参考流程图 8253控制寄存器地址:283H、计数器0地址:280H;计数器1:281H;CLK0连接时钟1MHz。 图3 实验电路之一参考流程图图4 实验电路之二参考流程图 4.实验程序设计如下: 8253_1.asm io8253a equ 283h io8253b equ 280h code segment assume cs:code

相关文档
最新文档