C语言上机实验一
- 格式:doc
- 大小:2.20 MB
- 文档页数:18
华南农业大学C语言实验上机实验第四版参考答案c语言程序设计上机实验指导与习题参考答案(第四版)实验1c语言程序初步一、实验目的(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。
(2)了解在该系统上如何编辑、编译、连接和运行一个c程序。
(3)通过运行简单的c程序,初步了解c程序的特点。
(4)在教师的指导下,学会使用在线评判系统。
二、实验内容1.运行第一个c程序[题目:thefirstcprogram]将下列程序输入visualc++,编译、连接和运行该程序。
#include\main(){printf(\}[具体操作步骤](1)在编辑窗口中输出程序。
(2)留存程序,取名为a1.c。
(3)按照第一章中介绍的方法,编译、连接和运行程序。
(4)按照第三章了解的方法,将代码递交至在线评判系统,系统回到“通过”,则该题顺利完成。
2.在在线评判系统中提交实现了计算a+b功能的程序[题目1001:排序a+b]由键盘输入两个整数,计算并输出两个整数的和。
实现该功能的程序如下,#include\main(){inta,b;scanf(\printf(\}(1)在程序编辑窗口中输出程序。
(2)留存程序,取名为a2.c。
(3)按照前二章中介绍的方法,编译、连接和运行程序。
(4)在程序运行过程中,输入1530l(l则表示输出回车符)(5)如果看到如下输出结果,则表明15+30的结果正确,如果得不到如下结果,则需检查并更正程序。
45(6)按照第三章中了解的方法步入在线评判系统。
(7)显示题目列表,点击题号为1001,题名为“计算a+b”的题目。
(8)查阅回去题目建议后,页面页面下端的“sumbit”,参考第二章递交程序的方法递交程序a2.c。
(9)查看评判结果,如果得到“accepted”则该题通过,否则返回第一步检查程序是否正确。
3实验2基本数据类型、运算和表达式一、实验目的(1)掌握c语言数据类型,熟悉如何定义一个整型和实型的变量,以及对它们赋值的方法。
C语言程序设计上机实验报告实验一一、实验名称: C程序的运行环境和运行C程序的方法二、实验目的:了解在C编译系统上如何编辑、编译、连接和运行一个C程序三、实验内容:(1). 输入并运行一个简单的C程序。
(2). 设计程序,对给定的两个数求和。
(3). 设计程序,对给定的两个数进行比较,然后输出其中较大的数。
四、源程序代码:代码1:#include<stdio.h>int main(){printf("hello world!\n");return 0;}运行结果1:程序分析1:代码2:#include<stdio.h> int main(){int a=5,b=6,c;c=a+b;printf("c=%d\n",c);return 0;}运行结果2:程序分析2:代码3:#include<stdio.h>int main(){int a=5,b=6,c;if(a>b){c=a;}else{c=b;}printf("%d\n",c);return 0;}运行结果3:程序分析3:五.实验总结C语言程序设计上机实验报告实验二一、实验名称:顺序结构程序设计二、实验目的:正确使用常用运算符(算术运算符、赋值运算符)的用法,熟练掌握算术运算符及其表达式,逻辑运算符和逻辑表达式。
三、实验内容:(1). 编写程序,实现小写字母转大写。
(2). 编写程序,实现输入两个不同类型数据后,经过适当的运算(加、减、乘、除)后输出。
(3). 编写程序,计算三角形面积、立方体的体积和表面积、圆的面积和周长。
(4). 编写程序,实现单字符getchar和putchar输入输出。
(5). 编写程序,实现十进制、八进制、十六进制不同数制的输出。
四、源程序代码代码1:#include<stdio.h>int main(){char c1,c2;c1=getchar();printf("%c,%d\n",c1,c1);c2=c1-32;printf("%c,%d\n",c2,c2);return 0;}运行结果1:程序分析1:代码2:#include<stdio.h>int main(){int a=5,c1,c2;double b=3.141592653,c3,c4;c1=a/b;c3=a/b;c2=a+b;c4=a+b;printf("%d,%d,%lf,%lf\n",c1,c2,c3,c4);return 0;}运行结果2:程序分析2:代码3:#include<stdio.h>int main(){here: printf("计算三角形的面积请输入‘1’,立方体的体积和表面积请输入‘2’,圆的面积和周长请输入‘3’.\n");int a;scanf("%d",&a);if(a==1){double l,h,s;printf("请输入三角形的底边长和所在底边的高.");scanf("%lf%lf",&l,&h);s=l*h/2;printf("三角形的面积为%.16f\n",s);}else if(a==2){printf("请输入立方体的长宽高.");double b,c,d,v,s;scanf("%lf%lf%lf",&b,&c,&d);v=b*c*d;s=b*c+b*d+c*d;printf("立方体的体积为%.16f,表面积为%.16f\n",v,s);}else{double r,s,c,m;printf("请输入圆的半径");scanf("%lf",&r);m=3.141592653;s=m*r*r;c=2*m*r;printf("圆的面积为%.16f,圆的周长为%.16f\n",s,c);}goto here;}运行结果3:程序分析3:代码4:#include<stdio.h> int main(){getchar();putchar('b');return 0;}运行结果4:程序分析4:代码5:#include<stdio.h>int main(){int a;printf("请输入任意十进制整数:");scanf("%d",&a);printf("转换为八进制数为:%o\n转化为十六进制数为:%x\n",a,a); return 0;}运行结果5:程序分析5:五、实验总结C语言程序设计上机实验报告实验三一、实验名称:选择结构程序设计二、实验目的:正确使用逻辑运算符和逻辑表达式,熟练掌握if 语句和switch 语句,学习调试程序。
实验一C程序的运行环境及简单程序编写一、实验目的1.了解tc2.0编译系统的基本操作方法,学会独立使用该系统。
2.了解在该系统上如何编辑、编译、连接和运行一个C程序。
3.通过运行简单的C程序,初步了解C源程序的特点。
二、实验内容1.编写一个计算球体体积的程序,要求用户自行录入球体的半径。
参考公式V=4/3πr3.。
2.编写一个程序,要求用户输入一个美金数量,然后显示出如何用最少的20美元、10美元、5美元和1美元来付款。
运行结果:Ener a dollar amount:93$20 bills:4$10 bills:1$5 bills:0$1 bills:3实验二顺序结构程序设计一、实验目的1.熟悉C语言中的基本数据类型,掌握定义常量和变量以及对它们赋值的方法,了解数据输出时所用格式转换符。
2.掌握格式输入/输出函数的用法。
3.学会简单顺序程序的设计。
4.养成良好的程序设计习惯。
二、实验内容1.编写一个程序,对用户录入的产品信息进行格式化。
Enter item number:583Enter unit price:13.5Enter purchase date(mm/dd/yyyy):3/24/2010Item Unit PurchasePrice date583 $ 13.50 3/24/20102.编写一个程序,要求用户输入一个两位数,然后按数位的逆序打印出这个数。
Enter a two-digit number:28The reversal is :82实验三选择结构程序设计一、实验目的1.熟练使用if、switch编写程序。
二、实验内容1.编写一个程序,确定一个数的位数。
Enter a number:374The number 374 has 3 digits假设输入的数最多不超过4位。
提示:利用if语句进行数的判定。
例如,如果数在0到9之间,那么位数为1;如果数在10到99之间,那么位数为2。
2.第一次实验C语言程序设计实验报告专业运算机科学与技术班级信安1302班日期成绩实验组别第 1 次实验表达式和标准输入与输出实验指导教师周时阳学生姓名学号同组人姓名实验名称表达式和标准输入与输出实验实验目的1.熟练把握各类运算符的运算功能,操作数的类型,运算结果的类型及运算进程中的类型转换,重点是C语言特有的运算符,例如位运算符,问号运算符,逗号运算符等;熟记运算符的优先级和结合性。
2.把握getchar, putchar, scanf和printf等函数的用法。
3.把握简单的C程序(顺序结构程序)的编写方式。
4.完成教师布置的习题及课程设计上的题目。
实验内容(一)输出“王”字源程序如下:#include <>int main(){puts("*************");puts(" * ");puts(" * ");puts("*************");puts(" * ");puts(" * ");puts("*************");return 0;}实验步骤:步骤一:计算输出进程中应操纵的空格数,选择星号作为输出的标记。
步骤二:采纳puts函数实现对字符串的输出。
调试及编译进程:实验中显现的不足及修改:无。
调试:实现对王字的输出。
(二)编程将华氏温度转换为摄氏温度源程序如下:#include <>int main(){double x,y;printf("请输入华氏温度:");scanf("%lf",&x);y=(5*(x-32))/9;printf("%.2lf(F)=%.2lf(C)",x,y);return 0;}编辑步骤:步骤一:概念两个浮点型变量,别离用来寄放华氏温度和摄氏温度步骤二:用输入函数输入一个华氏温度值并存入命名为x的单元中。
C语言程序设计上机实验报告(精选5篇)第一篇:C语言程序设计上机实验报告黔南民族师范学院 C语言程序设计上机实验报告系部:计算机科学系年级:2013 级班级:姓名:学号:实验时间:实验成绩:2013年月日实验三顺序结构程序的设计一实验名称:顺序结构程序的设计二.实验环境:windows XP系统,VC++6.0软件三.实验目的:四.实验内容:五.算法描述流程图六.源程序七.测试数据及运行结果八.实验心得实验成绩评分要求1、原创性发现抄袭或雷同成绩为0分2、正确性程序正确60分3、可读性格式清楚,有注释,变量命名规范20分4、健壮性对特殊测试数据有考虑有测试10分5、效率程序运行效率高10分第二篇:《c语言程序设计》上机实验报告要求《c语言程序设计》上机实验报告要求1.实验环境:软件系统:使用的软件环境硬件系统:机型说明2.实验目的:掌握如何编辑、编译、链接调试运行c程序3.实验内容:(1)掌握顺序结构程序设计.P26 ,p49,p62 3.2~3.7(2)掌握选择结构程序设计(if 和switch语句的用法)p4.2~(3)循环结构程序设计(while, dowhile,for语句的用法)。
(4)掌握数组的定义、输入和输出的方法,字符数组、字符串函数的使用。
(5)了解函数的定义,熟悉函数实参与形参的“值传递”方式,掌握函数的嵌套调用和递归调用方法。
(6)熟悉指针含义及其使用。
(7)熟悉结构体和共用体的使用。
(8)熟悉文件的使用。
4.实验要求:(1)输入编写的源程序,检查程序有无错误(语法和逻辑错误),有则改之。
(2)编译和连接,仔细分析编译信息,如有错误应找出原因并改正。
(3)运行程序,输入数据,分析结果。
5.实验结果:输出程序清单和运行结果。
(要求把原题内容,调试好的程序和其结果一并打印),6.实验体会分析运行结果,本次调试程序取得的经验(遇到的问题,解决的方法等)。
第三篇:C程序设计上机实验报告10C程序设计实验报告实验名称:指针与数组学时安排:2课时实验类别:上机操作型实验要求:1人1组 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、实验目的1.理解指针、地址和数组间的关系;2.掌握通过指针操作数组元素的方法;3.掌握数组名作为参数的编程方式。
c语言上机实验报告C语言上机实验报告引言:C语言是一门广泛应用于计算机编程领域的高级编程语言。
通过学习C语言,我们可以了解计算机程序的基本原理和实现方法。
在本次实验中,我们将进行一系列的C语言上机实验,旨在提高我们的编程能力和解决问题的能力。
实验一:基本语法和数据类型在这个实验中,我们首先学习了C语言的基本语法和数据类型。
我们了解了变量的定义和使用,以及常用的数据类型,如整数、浮点数和字符。
通过编写简单的程序,我们掌握了C语言的基本语法和运算符的使用方法。
实验二:流程控制和循环结构在这个实验中,我们学习了C语言的流程控制和循环结构。
我们了解了条件语句(if-else语句)和循环语句(for循环和while循环)的使用方法。
通过编写程序,我们掌握了如何根据不同的条件执行不同的代码块,以及如何使用循环结构重复执行一段代码。
实验三:数组和字符串在这个实验中,我们学习了C语言中数组和字符串的使用方法。
我们了解了如何定义和初始化数组,以及如何使用下标访问数组元素。
我们还学习了字符串的定义和常用的字符串处理函数。
通过编写程序,我们掌握了如何使用数组和字符串解决实际问题。
实验四:函数和指针在这个实验中,我们学习了C语言中函数和指针的使用方法。
我们了解了如何定义和调用函数,以及如何传递参数和返回值。
我们还学习了指针的概念和使用方法,包括指针的定义、指针的运算和指针的传递。
通过编写程序,我们掌握了如何使用函数和指针提高程序的模块化和灵活性。
实验五:文件操作在这个实验中,我们学习了C语言中文件操作的使用方法。
我们了解了如何打开和关闭文件,以及如何读取和写入文件。
我们还学习了文件指针和文件位置指示器的概念和使用方法。
通过编写程序,我们掌握了如何读取和处理文件中的数据,以及如何将数据写入文件。
总结:通过这一系列的C语言上机实验,我们深入学习了C语言的基本知识和编程技巧。
我们掌握了C语言的基本语法和数据类型,了解了流程控制和循环结构的使用方法,掌握了数组和字符串的操作技巧,学会了函数和指针的使用方法,以及文件操作的基本知识。
实验一(第1章实验)实验目的:1.掌握运行C语言程序的全过程。
2.熟悉编译环境。
3.初步熟悉C语言程序的语法规定。
4.了解简单函数的使用方法。
实验内容:1.编程且上机运行:求3个整数的和。
2.编程且上机运行:求2个数的和、差、积和商。
3.编程且上机运行:输入3个数,求最大值。
4.编程且上机运行:输入圆的半径,求圆的面积和周长。
5.在屏幕上输出:“hello world!”实验结果:实验二(第3章实验)1.实验目的:理解C语言的类型系统。
实验内容:写程序测试数据-2在类型char,int,unsigned int,long int,unsigned long int 中存储情况。
实验过程:实验结果:参见各种类型的存储实现描述。
2.实验目的:了解混合类型计算中类型的转换规则。
实验内容:写程序测试多种类型数据一起运算时类型的转换及表达式结果的类型。
注意unsigned int和int数据运算时类型转换的方向。
实验过程:/** 类型转换问题* 试问下面两个表达式等价吗?*/#include <stdio.h>#include <stdlib.h>int main() {unsigned int ui,uj;ui = 1;uj = 2;if (ui < uj)printf("\n%u < %u is true !\n", ui, uj);elseprintf("\n%u < %u is false !\n", ui, uj);if (ui - uj < 0)printf("\n%u - %u <0 is true !\n", ui, uj);elseprintf("\n%u - %u <0 is false !\n", ui, uj);system("pause");return 0;}实验结果:参见类型转换规则。
C语言程序设计实验教学(1)【实验目的】掌握TC2.0集成环境的应用,熟悉C语言程序的编辑-编译-连接-运行的过程,理解C语言程序的基本结构,认识C语言程序的运行情况。
【实验要求】积极动手,注意总结,书写实验报告。
【实验课时】2.0【实验内容】1. 上机环境的设置:在D:盘的根目录下新建两个子文件夹,分别以自己学号的前两位和后五位(例如:)和学号的前两位和后五位+a(例如:)命名;其中以学号命名的文件夹将用于存放今后由用户新建的所有C源程序文件(.c);而以学号+a命名的文件夹将用于存放所有对源程序进行编译或链接产生的目标文件(.obj)和可执行文件(.exe)。
2. TC2.0的运行:双击桌面上对应的TC2.0可执行程序的快捷方式图标,或选择C:盘根目录下的TC 子目录( 文件夹),双击TC.exe 文件的图标,屏幕即会显示Turbo C 2.0的编辑窗口。
可以使用ALT+Enter 切换窗口/全屏运行模式。
3. TC2.0基本操作:F10或ALT+快捷键激活菜单,Enter和光标键下拉展开菜单,光标键上下选择不同菜单项,Enter执行菜单功能。
在File菜单中选Change dir项(设置默认文件夹),回车后将其中内容修改为D:\学号。
移动亮块到Option 项,按回车键,在子窗口选择Directories项,再选Output directory 项,修改为D:\学号a。
返回到Option下拉菜单下选Save Options,保存设置。
4. 基本操作过程1)输入程序:输入书P4例1.1程序:File-New或Edit菜单,输入程序,注意分行输入和各种符号的搭配等。
编辑时可以使用左右光标键完成移动光标、删除键完成删除内容、Insert键完成插入/改写状态的切换等功能。
注意记住下列快捷健的功能。
Ctrl+Y删除1行;Ctrl+KB确定块首Ctrl+KK确定块尾完成一块内容的选择;Ctrl+KC复制;Ctrl+KV移动;Ctrl+KY删除块;2)保存程序:F2或File-Save/Write to 填写保存文件的位置和文件名,必须包含扩展名.C。
仲恺农业工程学院实验报告纸计算机科学与工程(院、系)计算机专业计机093班微机原理与接口技术课内容一使用MASM.EXE和LINK.EXE一、实验目的1.熟悉MASM.EXE 和LINK.EXE 的使用方法。
2.了解debug 调试工具,观察程序的执行过程和对寄存器和内存单元的影响。
二、实验预习要求1.按照题目要求在实验前编写好实验中的程序段。
三、实验内容1、首先在硬盘上建立一个文件夹,例如:D:\MASM,如下图所示。
2、下载MASM.EXE 和LINK.EXE 到D:\MASM 文件夹里,下图。
3、经过以上两步,我们已经做好了准备工作,接下来书写程序。
我们的程序要求为,计算y = a × b + c - 18,a、b、c 均为带符号的8 位二进制数据,为了实验观看实验结果,我们假设 a = 34H、b = 56H、c =E7H。
程序源代码如下(分号后面内容为注释内容,可以不输入):CC EQU 18 ;伪指令定义CCSTACK SEGMENT ;堆栈段起始DW 256 DUP(?) ;在堆栈段中预留了256 个字的内容TOP LABEL WORD ;TOP 为栈顶偏移地址STACK ENDS ;堆栈段结束DATA SEGMENT ;数据段起始DAT1 DB 34H ;DAT1为题中操作属数a,为字节,存于数据段中DAT2 DB 56H ;DAT2 为题中操作书b,为字节,存于数据段中DAT3 DB 0E7H ;DAT3 为题中操作书c,为字节,存于数据段中DATY DW ? ;DATY为题中计算结果预留空间,为字,存于数据段中DATA ENDS ;数据段结束CODE SEGMENT ;代码段起始ASSUME CS:CODE,DS:DATA,SS:STACK ;分配段地址对应关系START: MOV AX,DATA ;START为标号,MOV语句将DATA数据段地址送AX MOV DS,AX ;将AX内容送入DS,赋予DS数据段DATA段地址MOV AX,STACK ;将STACK堆栈段地址送入AXMOV SS,AX ;将AX内容送入SS,赋予SS堆栈段STACK的段地址MOV SP,OFFSET TOP ;SP设初值MOV AL,DAT1 ;取a,直接寻址方式MOV BL,DAT2 ;取b,直接寻址方式IMUL BL ;AX <- AL * BL,即将a * b 的值存入AXMOV BX,AX ;将AX 内容保存至BXMOV AL,DAT3 ;取c,直接寻址方式CBW ;由于c 是8位有符号数,所以做符号扩展至AHADD AX,BX ;AX <- AX + BX,完成将a*b+c结果存入AX操作SUB AX,CC ;AX <- AX - 18MOV DATY,AX ;将a*b+c-18的值,存放至数据段中偏移地址DATY的内存中MOV AH,4CH ;将4CH存入AH,为了下句调用DOS 21号中断INT 21H ;调用DOS 21中断,由AH=4CH决定返回DOS操作系统CODE ENDS ;代码段结束END START ;程序结束将以上代码保存为扩展名为.ASM 的文件的方法如下:点击“开始”菜单“运行”notepad,打开记事本程序,在记事本中输入如上代码,如下图。
然后,选择“文件”下拉菜单,选择“令存为”选项打开“另存为”对话框,选择保存位置为“D:\MASM”,文件名为“Sample.asm”(一定要注意扩展名必须为.asm或.ASM,大小写无所谓),保存类型为“所有文件”,如下图。
4、这时候D:\MASM 文件夹下就有3 个文件了,分别为“MASM.EXE”、“LINK.EXE”和“SAMPLE.ASM”。
将sample.asm 文件汇编为扩展名为.obj 的文件,如下图,首先进入DOS 环境下的D:\MASM 目录,然后使用MASM SAMPLE.ASM命令。
使用DOS 的DIR 命令查看当前目录下的文件,已经变为 4 个,多了一个sample.obj 文件,见下图。
然后,使用LINK.EXE,将SAMPLE.OBJ 文件链接生成可执行文件SAMPLE.EXE,下图。
使用DOS 的DIR 命令,可以查看到,又多了一个名为sample.exe 文件,请自行查看。
5、这时候,我们可以执行sample.exe,可以看到执行正常,但是没有任何输出,这是因为,我们只是改变了内存单元和寄存器的数据,并没有输出,所以,我们需要使用debug 来调试程序,观察程序的执行过程,和对寄存器和内存单元的影响,如下系列图示。
至此为止,我们的任务已经圆满完成,计算出了a*b+c-18 的内容(114DH),并存入了相应的内存单元中,请自己结合上例,独自完成。
四、实验步骤1、编译源程序生产OBJ文件2、链接OBJ文件生产执行文件3、调试执行文件思考题:在Debug 过程中,自己可以通过 e 指令修改内存单元内容,使得程序完成a、b、c 不是我们预定内容(34H、56H、E7H)的求解过程。
五、实验报告要求1.小结MASM 和LINK 的使用方法答:首先使用命令行进入存放MASM.EXE和LINK.EXE的文件夹,然后使用MASM编译源程序,格式为MASM 源程序文件名.asm,成功编译完源程序后会生成一个OBJ文件,然后使用LINK链接OBJ文件,格式为LINK 源文件名称.obj,成功链接后会生成一个执行文件。
2.完成思考题,并写出过程。
思考题:在Debug 过程中,自己可以通过 e 指令修改内存单元内容,使得程序完成a、b、c 不是我们预定内容(34H、56H、E7H)的求解过程。
反汇编程序可以看到第一条指令:MOV AX,13DA和第六条指令:MOV AL,[0000],由此可知数据段的首地址是13DA:0000;查看内存中13DA:0000地址的内容可以发现a、b、c的值存放的地方。
修改a的值为03,b的值为08,c的值为0C,再次查看内存内容,确认修改成功。
运行程序,查看内存内容,a*b+c-18=3*8+12-18=18,18的十六进制为12,所以程序运行成功。
内容二Debug 的常用调试命令和方法一、实验目的1.熟悉掌握Debug 的常用调试命令和使用方法。
二、实验预习要求1.复习实验内容一的内容,按照题目要求在实验前编写好实验中的程序段。
三、实验任务1、在Dos 界面输入命令“debug”(引号不用输入),然后回车(如下图所示),进入Debug 调试系统。
2、如果要查看各寄存器的内容,使用“R”指令(如下图所示)。
3、如要修改某寄存器的内容,可以使用指令“r XX”的方法(XX 为某寄存器的名字)。
如要将寄存器AX 的内容修改为1234。
如下图所示。
4、接下来,可以尝试更改其他寄存器的内容,比如将DS 修改为5A7B。
5、反汇编指令“U”,例如下图所示,反汇编自段地址CS(0B06),IP 为200开始的连续的12 条语句。
可以自己随便的试一下。
6、如果想查看某个内存单元中的内容的话,就需要用到“D”命令了。
如下图所示,查看DS 为段寄存器,偏移地址(有效地址EA)为0800 开始的内存单元的内容。
(请注意当前DS 的值)请思考,如何查看以ES 为段地址,500 位偏移地址的内存单元中的内容呢?答案当然是输入:D ES:0500 了,自己试一下吧。
你还可以尝试查看一下其他内存单元的内容。
7、我们看到了某个内存单元的值,但是不是我们想要的,例如,看到了DS:8000的字节内容是02(上图,0B06:0800 02),而我们需要它为4A。
如何把它改为4A呢?需要使用一个新的指令--“E”。
如下图的修改过程。
修改内存单元值就这么简单。
那么,接下来尝试查看ES:0500 的内存单元内容,然后将其修改为5B,然后修改ES:0501 的内容为7C,并检查结果。
8、现在到了要写指令的时候了,比如,你想看一下这条语句究竟是如何执行的:MOV AL,05。
那么,请看下图所示。
9、接下来我们给一个具体的例子,完整演示一个验证过程。
例:设DS=2000H,BX=1000H,AX=8040H,(21000H)=A0H,(21001H)=50H ,执行MOV AX,[BX]的结果是?解:这是一个寄存器间接寻址问题,首先求得EA,EA=BX=1000H;然后求得该有效地址对应的相邻两个字节(一个字)的内存单元的物理地址。
物理地址(低)=16 ×段地址+ EA = 16 × DS + EA = 16 × 2000H + 1000H = 21000H物理地址(高)=16 ×段地址+ EA + 1 = 16 × DS + EA + 1 = 16 × 2000H + 1001H = 21001H(注意段地址默认为DS)而由设知(21000H)=A0H,(21001H)=50H所以AL=A0H,AH=50H即AX=50A0H ,那么使用Debug 验证的过程如下系列图所示:至此,此验证过程就完成了!10、退出Debug,使用命令“q”。
四、实验步骤五、内容二实验报告要求1.小结Debug的使用方法答:首先打开命令行窗口,然后输入DEBUG就可以进入DEBUG模式,如果需要调试某一个程序,则需要进入执行文件的文件夹,然后输入DEBUG 执行文件名称.EXE,当完成调试任务时,可以使用Q命令退出并返回操作系统。
2.验证:DS=6000H,BX=1000H,DATA=0008H,(61008H)=66H,(61009H)=55H,执行MOV AX,DATA[BX]的结果。
首先进入DEBUG模式,然后修改DS的值为6000H,修改BX的值为1000H,修改内存地址61008的内容为66H,修改内存地址61009的内容为55H,然后写入指令MOV AX,0008[BX],最后执行并验证结果,指令DATA[BX]实际上就是DS:DATA[BX],即61008的地址,66H送到AL寄存器里,55H送到AH寄存器里,所以AX的值变为5566H。
六、实验总结通过本次实验,我学会了如何编写、编译和链接汇编程序,并且通过DEBUG命令和T命令观察了程序的执行情况和寄存器的值的变化情况,使我对各个寄存器的功能有了更深的了解。