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

合集下载

程序调试及实验报告

程序调试及实验报告

实验名称:程序调试实验实验日期:2023年3月15日实验地点:计算机实验室实验目的:1. 理解程序调试的基本概念和流程。

2. 掌握使用调试工具进行程序调试的方法。

3. 提高解决程序错误的能力。

实验环境:1. 操作系统:Windows 102. 编程语言:Python3.83. 调试工具:PyCharm实验内容:本次实验主要针对一个简单的Python程序进行调试,该程序实现了一个简单的计算器功能。

程序中存在一些错误,需要通过调试找出并修正。

一、实验步骤1. 编写程序首先,编写一个简单的Python程序,实现以下功能:- 输入两个整数- 计算并输出它们的和、差、积、商代码如下:```pythondef calculator():num1 = int(input("请输入第一个整数:"))num2 = int(input("请输入第二个整数:"))sum = num1 + num2difference = num1 - num2product = num1 num2quotient = num1 / num2print("和:", sum)print("差:", difference)print("积:", product)print("商:", quotient)calculator()```2. 运行程序运行程序,输入两个整数,观察输出结果。

3. 调试程序在运行程序的过程中,可能会发现以下错误:(1)输入非整数时,程序会报错。

(2)当第二个整数输入为0时,程序计算商会报错。

针对以上错误,进行如下调试:(1)使用try-except语句捕获输入错误,确保程序不会因为输入错误而崩溃。

修改后的代码如下:```pythondef calculator():try:num1 = int(input("请输入第一个整数:"))num2 = int(input("请输入第二个整数:"))sum = num1 + num2difference = num1 - num2product = num1 num2quotient = num1 / num2print("和:", sum)print("差:", difference)print("积:", product)print("商:", quotient)except ValueError:print("输入错误,请输入整数!")calculator()```(2)当第二个整数输入为0时,为了避免程序报错,可以添加一个判断条件,当第二个整数为0时,不进行除法运算。

c语言.实验1 基本操作及调试

c语言.实验1 基本操作及调试

实验1、C程序的编程环境和运行方法一、实验目的1、编辑简单的C程序,以此熟悉Dev-C++( 或Visual C++6.0)集成开发环境,并初步认识C程序的组成及书写风格;2、熟悉C语言源程序在Dev-C++( 或Visual C++6.0)中编辑、编译、连接和运行的全过程以及每一步骤的作用;3、了解编译过程中的语法错误信息并了解修改语法错误的方法;4、理解程序调试的概念,初步熟悉C程序的调试方法。

二、实验内容㈠基本操作1、创建工作目录在D盘新建一个实验1的工作文件夹,文件夹以班名+学号后两位+sy1来命名(例如:17数媒1班3号同学的实验1工作文件夹命名为sm103sy1。

注意:文件夹及文件的命名尽量不要用汉字!);2、安装Dev-C++用拷贝的编译软件压缩包(注意:用本次实验文件夹中提供的低版本编译软件Dev-Cpp 5.10 TDM-GCC 4.8.1 Setup.exe),在机房电脑(或自带笔记本)上练习安装Dev-C++并做必要的设置。

3、编译软件的基本操作启动Dev-C++,熟悉其中常用菜单、工具按钮的功能;㈡简单C程序的编辑、编译、连接和运行(以Dev-C++环境为例)1、创建一个简单的C源程序(1)启动Dev-C++后,单击“文件”菜单下的“新建”命令,选择“源代码”即创建了一个C源文件(2)在代码编辑窗口输入以下代码(注释语句不用输入):#include <stdio.h> // 这是编译预处理命令int main( ) //主函数{ // 函数体开始的标志printf ("This is a C program.\n"); // 输出双引号里面的文字信息return 0; // main函数的返回值为0}检查是否有编辑错误,确定无错误后单击“文件”菜单下的“保存”命令,以sy1-1为文件名,选择文件类型为c,将源文件保存到工作文件夹中(见下图)。

操作系统实验1.2C编程与调试-发给学生

操作系统实验1.2C编程与调试-发给学生

实验二C编程与调试(一)实验目的学会和掌握C语言开发一个应用程序的全过程,包括编辑、编译、调试过程。

(二)实验器材linux平台。

(三)实验内容1.使用gcc编译一个示例程序。

方法一:Linux下编写C程序一般要经过的步骤。

(1)启动常用的编辑器,输入C源程序代码。

在自己的主文件夹下,右击-“创建文档”-“空文档”,或者单击“主菜单”-“附件”-“文本编辑器”,进入文本编辑环境,输入C源程序,保存并命名为hello.c。

注:如果是复制代码的话,要改“”符号的格式,否则会报错。

#include<stdio.h>int main(void){printf(“Hello world!\n”);return 0;}(2)编译源程序。

在自己的主文件夹下,单击“主菜单”-“系统工具”-终端,进入命令行。

用GCC编译器对C源程序进行编译,以生成一个可执行文件。

方法如下:gcc -o hello hello.c运行程序,输入如下命令:./hello方法二:编译过程分成几个步骤单独进行,并观察每步的运行结果。

(1)预处理阶段,使用-E参数可以让GCC在预处理结束后停止编译过程:gcc -E hello.c -o hello.i预处理结束后,stdio.h的内容将插入到文件里,其他当被预处理的宏定义也都做了相应的处理。

(2)编译阶段gcc -S hello.i -o hello.s上述命令将代码翻译成汇编语言。

(3)汇编阶段,将生成的.s文件转成.O的二进制目标文件。

gcc -c hello.s -o hello.o(4)连接阶段在成功编译后,就进入了连接阶段。

gcc hello.o -o hello完成连接后,gcc就可以生成可执行文件,运行程序,输入如下命令:./hello如果整个程序是由多个源文件组成的,相应地也就形成了多个编译单元。

假设有一个由foo1.c和foo2.c两个源文件组成的程序,为了对它们进行编译,并最终生成可执行程序foo,可以使用下面这条命令:gcc foo1.c foo2.c -o foogcc总体选项列表后缀名所对应的语言-c 只是编译不链接,生成目标文件“.o”-S 只是编译不汇编,生成汇编代码-E 只进行预编译,不做其他处理-g 在可执行程序中包含标准调试信息-o file 把输出文件输出到file里-v 打印出编译器内部编译各过程的命令行信息和编译器的版本-I dir 在头文件的搜索路径列表中添加dir目录-L dir 在库文件的搜索路径列表中添加dir目录-static 链接静态库-llibrary 连接名为library的库文件2.使用gcc发现程序错误。

上机1--C语言简单程序的编写和调试

上机1--C语言简单程序的编写和调试

上机1 C语言简单程序的编写和调试一、目的熟悉Visual C++6.0集成环境,掌握在该环境下进行程序调试的一般方法。

二、要求1.熟悉Visual C++6.0集成环境的使用,掌握在V isual C++6.0集成环境下输入,编译,调试和运行C程序的基本过程和方法;2.通过编写简单程序,掌握C程序的基本组成和结构,以及用C程序解决实际问题的步骤;三、例题1.在V isual C++6.0集成环境中练习程序的输入、编译、连接和运行的基本方法。

〔指导〕(1)启动V isual C++6.0 ,进入Visual C++6.0 集成环境。

(2)设置基本环境:“工具”->“选项”->“格式”标签页。

“颜色”栏中:number 前景颜色“紫红色”,string前景颜色“红色”,operator前景颜色“枣红色”。

(3)在计算机的E盘上创建一个存放今天上机程序的目录夹,如“C语言程序”。

(4)创建一个C源程序:“文件”-> “新建”,打开“新建”对话框。

选“文件”标签页,选择C++ Source File 一项。

在“文件”输入框中输入当前文件的名字s1-1.c,在“位置”处选择将文件保存的路径e:\C语言程序。

(4)键入C源程序:#include <stdio.h>void main(){printf ("Hello, C! \n");}(5)执行“编译”,编译程序,产生目标文件。

(6)执行“执行”,连接生成.exe文件。

Hello,C!2. 练习程序:格式化输出变量〔指导〕按前面步骤编辑程序文件命名为s1-2.c:#include <stdio.h>void main(){int a, b, sum; /*定义变量*/a=40; b=50; /*变量赋值*/sum=a+b; /*求和*/printf ("Hello, C! \n");printf ("Sum is %d \n", sum); /*输出sum*/}写出程序输出结果,看看和预期的结果是否一致。

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

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

实验一初级程序的编写与调试实验一、实验内容1.内存操作数及各种寻址方式使用1MOV AX,12342MOV [1000],AX3MOV BX,10024MOV BYTE PTR[BX],205MOV DL,396INC BX7MOV [BX],DL8DEC DL9MOV SI,310MOV [BX+SI],DL11MOV [BX+SI+1],DL12MOV WORD PTR[BX+SI+2],2846步骤:(1) 用A命令键入上述程序,并用T命令逐条运行。

(2) 每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。

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

2.求累加和程序:程序:1MOV BX,10002MOV CX,103SUB AX,AX4LOP:ADD AL,[BX]5ADC AH,06INC BX7J:LOOP LOP8INT3步骤:(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值是否正确。

实验1程序调试实验

实验1程序调试实验

实验 1 程序调试实验一:实验目的:1.学习及掌握汇编语言源程序的大体结构,明确程序中各段的功能和彼此之间的关系。

2.熟练掌握在计算机上成立、汇编、连接、调试及运行程序的方式。

3、熟悉和掌握DEBUG常常利用命令的利用二:实验内容:1.汇编语言源程序的成立2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给犯错误信息。

(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。

(3)若程序中利用了宏指令,则汇编程序将展开宏指令。

汇编进程的错误分警告错误(Warning Errors)和严重错误(Severe Errors)两种。

其中警告错误是指汇编程序以为的一般性错误;严重错误是指汇编程序以为无法进行正确汇编的错误,并给犯错误的个数、错误的性质。

这时,就要对错误进行分析,找出原因和问题,然后再挪用屏幕编辑程序加以修改,修改以后再从头汇编,一直到汇编无错误为止。

3.用连接程序生成可执行程序文件经汇编以后产生的目标程序文件(.OBJ文件)并非是可执行程序文件,必需通过连接以后,才能成为可执行文件(即扩展名为.EXE)。

4.程序的执行成立了正确的可执行文件以后,就可以够执行该程序。

本程序当中没有效到DOS中断挪用指令,所以在屏幕上看不到程序执行的结果。

可以采用调试程序DEBUG来进行检查。

三:实验程序:1.两字节的二进制数加法要求:在存储单元A起有两字节的无符号加数,在单元B起有两个字节的无符号被加数,将其两数相加,结果存到C单元处。

设二进制数低字节数在前,高字节数在后。

DATA SEGMENTA DB 11H,22H ;概念一字节变量A,赋初值11H,其后内存字节单元中寄存22HB DB 33H,44H ;概念一字节变量B,赋初值33H,其后内存字节单元中存44HD DB?,? ;概念一字节变量D,并预留两个字节的空间DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA ;成立断与段寄放器的对应关系START:MOV AX,DATAMOV DS,AXMOV AL,A ;将A单元的内容赋给AL寄放器ADD AL,B ;将AL的内容与B中内容相加,并赋给ALMOV D,AL ;将AL的内容赋给D单元MOV AL,A+1ADC AL,B+1MOV D+1,ALMOV AH,4CH ;结束的正常语句INT 21HCODE ENDSEND START2. 在内存TAB开始的16个单元持续寄存了0-15的平方值(0-225),任给一个数X(0 ≤ X ≤15),求X的平方值,并把结果寄存在Y单元中。

程序的编译与调试实验报告

实验二程序的编译与调试第一部分配置本地计算机与虚拟机的通讯一、配置本地计算机的vmnet1网络接口1、由开始→控制面→网络连接2、双击VMware Network Adapter VMnet1接口→在“VMware Network Adapter VMnet1”状态对话框中选择属性按钮3、在“VMware Network Adapter VMnet1”属性对话框中双击“Internet协议(TCP/IP)”→出现“Internet协议(TCP/IP)属性”对话框例:若VMnet1的IP地址为:10.64.254.77子网掩码为:255.255.255.0那么:虚拟机中Linux设置的IP地址必须是:10.64.254.xx其中xx表示:1~254二、配置虚拟机1、打开虚拟机,但不要执行Power on this virtual machine→而是双Network Adapter2、在出现的“Virtual Machine Setting”对话框中确保选中“Host-only”选项→确定按钮3、选择“Power on this virtual machine”启动虚拟机三、配置Linux网络接口的IP地址1、使用root用户登录linux操作系统后,执行netconfig命令,将linux计算机IP地址设置为与本地计算机的VMnet1网络接口的IP地址处于同一网段,设置完成后输入reboot重启linux操作系统例:若VMnet1的IP地址为:10.64.254.77子网掩码为:255.255.255.0那么:虚拟机中Linux设置的IP地址必须是:10.64.254.xx其中xx表示:1~2542、在本地计算由http://202.204.125.59/~gaobao/下载ssh_pshell,打开ssh_pshell连接虚拟机,以root 用户登录第二部分gcc编译器的使用作业:编译如下程序,并填写程序的输出结果:1、源代码---Pointer.c#include <stdio.h>int main(){int a = 100, b = 200;int *p1 = &a, *p2 = &b;printf(“%d, %d\n”,a,b);printf(“%d,%d\n”,*p1, *p2);printf(“%x,%x\n”,&a,&a);printf(“%x,%x\n\n”,p1,p2);*p1 = *p1*3;Printf(“%d\n”,a);Printf(“%d\n\n”,*p1);p1 = &b;printf(“%x\n”,p1);printf(“%x\n”,p2);return 0;}2、编译:#gcc –o pointer pointer.c3、执行#./point(二)、运行结果需要的技能0、vi编辑器的使用Vi是广泛应用于各种unix和Linux系统中的文本编辑器,它是标准的Linux文本编辑程序。

微机软件课程设计实验报告

实验一基本程序编程和程序调试一、实验目的1、掌握数码转换等基本程序设计的技巧和方法。

2、熟悉DEBUG命令。

3、学会和掌握用DEBUG调试程序的方法。

二、实验设备PC机一台,装有DOS基本系统三、实验内容及步骤用DEBUG建立、汇编和运行调试程序的操作。

DEBUG是DOS系统支持的用于汇编语言源程序调试的系统软件。

它共有19条命令完成相应的功能,命令及其格式可参阅附录一。

(一)DEBUG操作练习1)实验调试程序程序的功能是从3500H内存单元开始建立0-15共16个数据。

程序略。

2)实验步骤:(1)输入与修改①启动DOS,在DOS提示符下输入DEBUG后回车,屏幕立即显示DEBUG提示符“—”,表明已进入DEBUG状态,可以执行DEBUG的各种命令。

②用DEBUG中的汇编命令“A 地址”将程序建立在内存单元中。

在提示符“—”下键入:“A 2000 ↵”此时显示器上将会显示程序的段地址CS和偏移地址IP,则可以输入以上的程序了。

③用反汇编命令“U 地址”检查程序:在提示符“—”下,键入“U 2000↵”,将从2000内存单元开始的内容反汇编,屏幕上即显示:(2)显示和修改数据①用修改内存单元命令“E 地址”在指定内存单元中存入一个数。

如要在3500为首址的单元中存入14H和25H两个数据,可在提示符“—”下,键入:“E 3500↵”②用显示内存命令“D 地址”检查指定单元的内容,在提示符“—”下,键入“D3500↵”③用显示和修改命令“R ”或“R 寄存器名”显示寄存器或修改其内容,在提示符“—”下,键入“R↵”(3)程序运行程序的运行方式有单步运行、断点运行和连续运行几种方式。

①单步运行输入DEBUG跟踪命令“T”或“T=地址”或“T=地址指定次数”,可从指定地址处运行该单元中的一条指令,以后只要连续输入“T”命令就能连续执行一条一条指令。

如在提示符“—”下,键入“T=2000 ↵”②断点运行用运行命令“G=地址地址断点地址断点…”执行指定地址的程序,在提示符“—”下,键入“G=2000 2011 ↵”③连续运行输入DEBUG 命令“G=地址”,执行指定地址的程序。

微机原理实验 初级程序的编写与调试

movaxdatamovdsax设置数据段movaxstackmovssax设置堆栈段leaspstacktop设置栈顶指针movax123movcl100divclmovresult1al除以100得百位数movalahmovahmovcl10divclmovresult2al余数除以10得十位数movresult3ah余数为个位数movax4c00h返回dosint21hcodeendsendstart最后一行要按回车键七实验源程序清单实验后以电子报告形式存储到指定位置源程序路径及文件名
EN电子报告形式存储到指定位置)
1.源程序路径及文件名:D:\MASM>MASMli55;
2.可执行程序路径及文件名:D:\MASM>DEBUGli55.EXE
八、上机调试情况说明:
1.上机建立ASM源文件步骤
A.无法建立源文件
B.直接在文件夹内以文本该后缀名并将程序拷入其中。
实验过程(35)
实验报告(45)
总分
指导教师签字:
年月日
备注:
注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。
2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。
九、实验结果
在DOS下:
图一、是执行1.2步的结果
在windows下:
图三、第二步的截图
图四、第5步截图
图五、第14步截图
在DOS下第2、5、7、10、14条指令的IP分别为0003、000E、0011、0018、0023
机器码:8ED8、BC4000、B164、8AC4、A20100
CS=1445,DS=142F或143F,SS=1440,ES=142F
在windows下第2、5、7、10、14条指令的IP分别为0003、000A、0010、0017、001F

实验一 简单C语言程序的调试

实验一简单C语言程序的调试(2学时)一、实验目的掌握选择结构程序设计的一般方法及选择结构程序的调试方法。

二、实验内容已知地球的赤道半径为6378.137千米。

假设在赤道上,有两个处于不同经度(单位为度)的城市,用C语言编程序求出这两点之间的直线距离(即弦长)与球面距离(即劣弧的长度)。

要求:⑴计算结果要有尽可能高的精确度。

⑵要考虑到横跨东、西两个半球的情况。

(提示:东经为正,西经为负。

)⑶要求输入数据时之间以空格分隔。

例如,欲求赤道上东经10度到东经50度的距离,输入格式应为:10 50⑷最后提交完成的C语言源程序(扩展名为.c)文件。

建议:从简单到复杂,先实现同一个半球上的计算,正确运行之后再拓展到两个半球。

三、参考测试数据及结果:东经0度,东经90度——直线距离9020.047727 ,球面距离10018.754000东经20.5度,西经36.6度——直线距离6096.548421 ,球面距离6356.342816东经160度,西经170度——直线距离3301.566601 ,球面距离3339.584667# include "stdio.h"#include <math.h>main(){float A,B,C,D,E,H;printf("请输入纬度A地经度B地经度\n");printf("备注:东经为正,西经为负\n");scanf("%f%f",&A,&B);C=abs(A-B);if (C>180)C=360-C;D=C*3.1415926/180;E=sin(D/2)*6378.137*2;H=D*6378.137;printf("E=%f\nH=%f\n",E,H);}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

南昌大学实验报告
学生姓名:学号:专业班级:电Ⅲ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,或宏汇编集成环境。

五.实验步骤
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.求累加和程序:
程序:
MOV BX,1000
MOV CX,10
SUB AX,AX
LOP:ADD AL,[BX]
ADC AH,0
INC BX
J:LOOP LOP
INT 3
步骤:
(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.多字节加法程序
程序:
MOV DI,1000
MOV CX,8
MOV SI,2000
CLC
LOP:MOV AL,[SI]
ADC [DI],AL
INC SI
INC DI
LOOP LOP
INT 20
步骤:
(1) 用命令键入此程序
(2) 用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,
均为低字节在前面。

4.数据串搬家程序
(1)用A命令键入下列程序:
MOV SI,1000
MOV DI,1500
MOV CX,0FH
LOP:MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
DEC CX
JNZ LOP
INT 20
(2)用A命令DB伪指令在1000H键入下列字符串:‘IBM_PC COMPUTER'
(3)用G命令运行此程序,并用D命令检查目的地址处的字符与源串是否一致。

5.自编程序
用16位减法指令编一个32位(4字节)数减法程序,两个源数及结果存放地址同多字节加法程序,调试并做记录。

六.实验报告要求
1.各项实验记录,可以用截图或文字进行说明。

2.要求你修改的程序的清单(修改后)和调试记录,源程序请添加适当的注释。

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

七.简答题
1.MOV BYTE PTR[BX],20
MOV WORD PTR[BX+SI+2],2846
上述指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。

答:不行,byte ptr 的意思的指定一个字节,使20存入bx的低字节中。

word ptr 的意思是指定一个字,所以存放的2845中,45放在高地址,28放低地址。

2.用G命令运行多字节加法程序,并用D命令检查其结果(存放在哪里?),是否正确?
答:2个字节的话存放在ax中,4个字节的话则存放在ax、dx中。

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

答:int 3h,则不返回dos系统。

Int 20h 则返回dos系统。

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

修改后的程序:
MOV SI,1000
MOV DI,1500
MOV CX,0FH
LOP:MOV AL,[SI]
MOV [DI],AL
INC SI
INC DI
DEC CX
JNZ LOP
MOV SI,1002
MOV CX,0FH
MOV CX,0FH
LOP:MOV AL,[DI]
MOV [SI],AL
INC DI
INC SI
DEC CX
JNZ LOP
INT 20
八、实验总结
汇编语言博大精深,第一次做试验就感觉到了难度。

不过只要按着步骤做,还是可以得到正确结果的,只是,各个步骤之间不知道什么联系,还不太懂。

相关文档
最新文档