微机原理实验指导书
微机原理实验指导书

实验一初级程序的编写与调试一、实验目的1、熟练掌握的DEBUG常用命令,学会用DEBUG调试程序;2、深入了解数据在存储器中的存取方法,及堆栈中数据的压入与弹出;3、掌握各种寻址方法以及简单指令的执行过程。
二、实验内容1、设堆栈指针SP=2000H,AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。
请用堆栈作为两寄存器交换内容的中间单元,用DEBUG调试程序进行汇编与调试。
2、设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300H—304H连续单元顺序装入0AH、OBH、0CH、0DH、0EH。
在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程。
当每条数据传送完毕时,AX中的内容是什么。
程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI]HLT3、设AX=0002H,编一个程序段将AX的内容乘10,要求用移位的方法完成。
三、实验要求1、实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,对程序结果的分析等。
2、本实验要求在PC机上完成。
3、本实验只要求在DEBUG调试程序状态下进行,包括汇编程序,调试程序,执行程序。
4、编程提示:(1)、实验内容1将两个寄存器内容进行交换时,必须有一个中间寄存器才能进行内容的交换。
如果用堆栈作为中间存储单元,必须遵循先进后出的原则。
(2)、实验内容2[1] 其中数据段寄存器中的段地址为进入DEBUG状态后系统自动分配的段地址。
[2] SI和BX的初值可在DEBUG的状态下,用R命令装入,也可以在程序中用指令来完成。
[3] 用T命令执行程序,可进行单步跟踪执行,每执行一条指令就可以看到各寄存器的状态,也可用R命令直接调出寄存器,来检查各寄存器内容是否正确。
微机原理实验学生实验指导书

微型计算机原理实验指导书河北大学电子信息工程学院2017年10月目录实验一系统认识及编程初步实验 (1)实验二输入输出程序设计实验 (7)实验三8255并行接口实验 (9)实验四8259中断控制实验 (13)实验五8254定时/计数器应用实验 (19)实验六综合实验 (24)实验一系统认识及编程初步实验一、实验目的1. 掌握TD系列微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
2. 掌握使用运算类指令编程及调试方法。
3. 学习使用软件监视变量的方法。
二、实验设备PC机一台,TD-PITE实验装置一套。
三、实验内容(一)基础实验1. 系统认识实验编写实验程序,将00H~0FH共16个数写入内存3000H开始的连续16个存储单元中。
2. 运算编程实验80X86指令系统提供了实现加、减、乘、除运算的基本指令,可对表1-1所示的数据类型进行算术运算。
本实验以二进制双精度加法运算为例,计算X+Y=Z,将结果Z存入某存储单元。
表1-1 数据类型算术运算表(二)提高实验1. 在系统认识实验中,编写程序,将内存3500H单元开始的8个数据复制到3600H单元开始的数据区中。
通过调试验证程序功能,使用E命令修改3500H单元开始的数据,运行程序后使用D命令查看3600H单元开始的数据。
2. 在运算编程实验中,求累加和程序设计,在偏移地址为1000H开始依顺序填入16个字(16个16位数),利用程序求和,存放在偏移地址2000H。
四、实验步骤(一)系统认识实验1. 运行Wmd86软件,进入Wmd86集成开发环境。
2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言和寄存器类型,这里我们设置成“汇编语言”和“16位寄存器”,如图1-1、图1-2所示。
设置选择后,下次再启动软件,语言环境保持这次的修改不变。
图1-1 语言环境设置界面图1-2 寄存器设置界面3. 语言和寄存器选择后,点击新建或按Ctrl+N组合键来新建一个文档,如图1-3所示。
微机原理实验指导书(新版)

微机原理与接口技术实验指导书主编:王青岳陈超波张晓倩许韫韬西安工业大学电信学院软件实验部分 (1)1 汇编基本原理 (2)1.1 程序,可直接运行的程序,汇编源程序,汇编 (2)1.2 CPU取指令、执行指令的过程 (3)2汇编工具MASM5.0使用方法 (3)2.1汇编源程序文件的建立方法 (3)2.2编译阶段 (5)2.3链接阶段 (6)2.4 程序调试阶段 (7)3软件实验项目 (9)软件实验一清零实验 (9)软件实验二码制转换实验 (11)软件实验三数据区移动实验 (13)软件实验四冒泡法排序实验 (16)软件实验五存储器校验实验 (18)软件实验六实时时钟显示实验 (19)硬件实验部分 (21)1 微机实验系统简介 (22)2 实验系统上位机软件使用方法 (23)2.1 软件启动 (23)2.2 如何使用星研集成环境软件 (23)3 硬件实验项目 (32)硬件实验一8255 PA口控制PB口实验 (32)硬件实验二8255控制交通灯实验 (34)硬件实验三74HC138译码器实验 (37)硬件实验四8253方波实验 (39)硬件实验五8259A中断控制器实验 (41)硬件实验六8250可编程通信实验(与微机) (44)硬件实验七简易电子琴实验 (49)硬件实验八LED8 * 8点阵实验 (58)软件实验部分1 汇编基本原理1.1 程序,可直接运行的程序,汇编源程序,汇编程序程序以文件的形式存在,它是由若干条“指令”顺序排列存储构成的。
指令是对符合CPU指令集的所有信息的统称,“指令”在程序中以两种形式存在,一种是以“指令代码”的形式(在可直接运行的程序文件中),另一种是以“助记符”的形式(在汇编源程序文件中)。
无论“可直接运行的程序”还是“汇编源程序”,其中的指令都是以顺序排列的方式存储的,只是指令存在的方式不同。
可直接运行的程序当程序中的指令是以可执行的“指令代码”的形式存在时,该程序即为可直接运行的程序,该程序所在的文件即为“可执行程序文件”。
微机原理实验指导书 何小海 严华

实验一数据传送一、实验目的熟悉星研集成环境软件的使用方法。
熟悉Borland公司的TASM编译器熟悉8086汇编指令,能自己编写简单的程序,掌握数据传输的方法。
二、实验内容1、熟悉星研集成环境软件。
2、编写程序,实现数据段的传送、校验。
使用汇编语言,将数据段中3000H~30FFH单元的内容传送给实验仪B4区的61C256的2000H~20FF中;B4区的61C256在I/O设备区,使用IOR、IOW读写;再将它传送回数据段的6000H~60FFH中。
三、程序流程图(学生根据实验内容设计)四、实验步骤在DS段内3000H~30FFH中输入数据;使用单步、断点方式等调试程序,检测DS段内6000H ~60FFH中的内容。
熟悉查看特殊功能寄存器、CS段、DS段的各种方法。
五、程序清单(参考)本实例的源程序如下:.MODEL TINY ;memory mode : tiny.STACK 100 ;堆栈.CODE ;开始程序段START: MOV AX,@DATAMOV DS,AXMOV ES,AXNOPMOV CX,100HMOV SI,3000HMOV DX,2000HSTART1: MOV AL,[SI]OUT DX,ALINC SIINC DXLOOP START1MOV DI,6000HMOV DX,2000HMOV CX,100HSTART2: IN DX,ALMOV [DI],ALINC DIINC DXLOOP START2SJMP $Move ENDPEND START六、思考题编写一个程序,将数据段中2000H~20FFH单元的内容传送给数据段的6000H~60FFH中。
实验内容:1、用所学过的寻址方式编程实现将存储单元DS:1000H单元的内容送到DS:2020H单元。
2、设各寄存器及存储单元的内容如下:(DS)=0500H,(BX)=0010H,(SI)=0001H,(05010)=12H,(05011)=34H,(05012)=56H,(05013)=78H,(05120)=ABH,(05121)=CDH,(05122)=EFH,说明下列各条指令执行完后AX寄存器中的内容。
微机原理实验指导书

前言《微型计算机原理及应用》是一门实践性很强的专业技术基础课,因此,必须在课堂教学的基础上配以足够的实验或实践性教学环节,以便理论联系实际,使学生能深入理解课堂教学内容,加强学生动手能力,以加深对理论学习的理解和掌握,提高学生分析问题﹑解决问题的能力。
本实验指导书是《微型计算机原理及应用》一书的配套教材。
该实验指导书紧密结合教材内容,使用复旦大学科教仪器厂生产的FD-SJ8088A微机实验系统,合理安排了微机实验。
全书共分二部分。
第一部分汇编语言上机操作及程序调试方法及软件部分实验第二部分FD-SJ8088A微机实验系统介绍及硬件部分实验对于每一个实验都给出了实验目的﹑实验内容﹑预习要求﹑报告要求﹑实验提示﹑思考题。
实验提示部分我们仅给出部分文字提示和参考流程图,以作为学生自己编程时的参考。
我们主张学生在做实验前,必须要充分预习,充分准备,要依靠自己在实验前编出的程序,经过实验调试改正程序,得出正确的结果。
这样做实验,才能真正有收获,才能真正提高分析问题和解决问题的能力。
本实验指导书在编写的过程中,得到了本系的领导和老师的支持﹑指导和帮助,在此表示衷心的谢意。
由于编者水平有限,书中不妥或错误之处在所难免,欢迎大家在使用中提出宝贵意见。
编者2005年8月目录实验须知 (3)第一部分汇编语言上机操作及软件部分实验实验一汇编语言上机环境的熟悉和命令使用 (4)实验二利用D E B U G命令调试程序 (7)实验三利用中断指令进行输入输出程序设计 (9)实验四汇编语言综合编程实验 (11)第二部分硬件部分实验FD88调试软件 (12)实验五简单I/O接口控制实验 (21)实验六 8255 接口控制实验 (21)实验须知一、预习要求1.实验前认真阅读实验教程中有关内容,明确实验目的、内容和实验任务。
2.每次实验前做好充分的预习,对所需预备知识做到心中有数。
3.实验前应编好源程序,并对调试过程、实验结果进行预测。
微机原理实验指导书

实验一数据传送一、实验目的1、熟悉SH51仿真器的使用方法。
2、练习设计简单的程序。
3、掌握8031片内RAM和片外RAM的数据传送的方法,从而了解这两部分存储器的特点二、实验设备和器件PC一台、DP-51PROC单片机实验仪一台、仿真器一台。
三、实验内容将8031内容RAM40H—4FH置初值00H—0FH,然后将40H—4FH 的内容传送到外RAM4800H—480FH,再将4800H—480FH传回到内部RAM50H—5FH。
设置断点B1、B2、B3,每运行到断点时检查相应的CPU现场和存储单元的内容。
四、实验步骤1、向机器输入程序2、运行程序至第一个断点B1,检查内容RAM40H—4FH单元的内容及累加器A 的内容;3、运行程序至第二个断点B2,检查RAM4800H—480FH单元的内容及累加器A、数据指针DPTR的内容;4、运行程序至第三个断点B3,检查内容RAM50H—5FH单元的内容及累加器A、数据指针DPTR的内容;五、实验程序ORG 0000HSTART: LJMP MAINORG 0040HMAIN: MOV R0, #40HMOV R2, #10HCLR AA1: MOV @R0, AINC R0INC ADJNZ R2, A1 B1: MOV R0, #40HMOV DPTR, #4800HMOV R2, #10HA2: MOV A, @R0MOVX @DPTR, AINC R0INC DPTRDJNZ R2, A2B2: MOV R0, #50HMOV DPTR, #4800HMOV R2, #10HA3: MOVX A, @DPTRMOV @R0, AINC R0INC DPTRDJNZ R2, A3B3: SJMP $END实验二并行口一、实验目的:通过实验了解8031并口输入方式和输出方式的工作原理和编程方法。
二、实验设备及器件:PC一台、DP-51PROC单片机实验仪一台、仿真器一台。
微机原理实验指导书(修改1023)

微机原理实验指导书华中科技大学计算机学院武汉豪申光电新技术有限公司目录微机原理实验 (3)第一章16位汇编语言编程验 (3)实验一系统认识实验 (3)实验二分支程序设计实验 (6)实验三循环程序设计实验 (9)实验四排序程序设计实验 (12)实验五子程序设计实验 (15)微机接口实验 (19)第一节并行接口实验(8255芯片实验) (19)实验一8255并行接口实验 (19)第二节定时/计数实验(8253芯片实验) (26)实验二音乐发声器接口实验 (26)第三节串行通信接口实验(8251芯片实验) (33)实验三 RS-232标准全双工查询方式异步串行通信实验 (34)第四节A/D D/A转换器接口实验 (42)实验四查询方式A/D转换器接口实验(ADC0809) (42)实验五 D/A函数波形发生器接口实验(DAC0832) (49)微机原理实验第一章16位汇编语言编程验实验一系统认识实验⑴实验目的掌握在MF平台中汇编程序的编写、调试方法。
⑵实验内容基本实验将存储区BUF1中的内容复制到BUF2中。
⑶实验步骤(一)方式1(Debug方式)1.在MF2KP环境下输入汇编程序,编译、连接,生成.exe文件。
2.启动调试程序(Debug)。
3.在程序的退出处设置断点,利用Add Watch命令查看BUF2中的内容是否正确。
(二)方式2(人-机交互方式)1.在MF2KP环境下输入汇编程序,编译、连接、运行。
2.按提示输入数据,在屏幕显示的结果中查看BUF1,2中的内容是否正确。
3.输入不同的字符串,可得到不同的结果。
⑷实验资源配置IBMPC微机,Win2000操作系统,MF2KP微机原理实验集成开发环境。
⑸实验软件的编程◇实验流程图如图1.1.1所示将存储区BUF1中的内容复制到BUF2中的程序主功能模块如图1.1.1中的虚线框中所示。
◇实验参考程序如下所示;*--------------------------------------------------* ;* Aexp1.asm(汇编语言编程认识实验) * ;* Copyright (c) 2002 by HUST * ;* 程序调试:在EXIT处设置断点,利用Add Watch命令 * ;* 查看BUF1和BUF2的内容是否正确 * ;*-------------------------------------------------* DATA SEGMENTBUF1 DB 'MASM HELLO WORLD'COUNT EQU $-BUF1BUF2 DB20DUP(?)DATA ENDSSTACK1 SEGMENT STACKDB20DUP(?)STACK1 ENDSCODE SEGMENTASSUME DS:DATA,SS:STACK1,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV SI,OFFSET BUF1 ;建立源地址指针MOV DI,OFFSET BUF2 ;建立目标地址指针MOV CX,COUNT ;字节数送入CX寄存器L1: MOV AL,[SI] ; 取源数据一个字节送入AL中MOV [DI],AL;将源数据送入目标地址单元中INC SIINC DIDEC CXJNZ L1 ;判断是否传送完毕EXIT: MOV AH,4CHINT21HCODE ENDSEND START⑹实验要求◇按要求完成实验得出正确结果.◇试着自己写出人机对话方式的汇编程序.◇完成实验报告实验二分支程序设计实验⑴实验目的掌握分支程序的结构。
《微机原理》实验指导

《微机原理》实验指导书制订教师:王晓锐2015年4月目录实验1 EMU8086操作 (3)实验2 简单程序设计 (4)实验3 分支程序设计 (5)实验4 循环程序设计 (6)实验5 简单LED控制实验 (7)附录A:Emu8086使用指南 (8)附录B:源程序代码 (17)实验1 EMU8086操作1 实验目的:熟悉仿真软件emulator的使用。
熟悉指令系统和常用的伪指令,掌握简单程序的设计方法。
2 实验内容1:编写计算F=XY+Z-500的程序,其中X,Y,Z均为无符号的字节操作数。
程序代码如下所示。
DATA SEGMENTX DB 29Y DB 8Z DB 25F DW ?DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AXMOV AL,XMUL YMOV BH,0MOV BL,ZADD AX,BXSUB AX,500MOV F,AXMOV AX,4C00HINT 21HCODE ENDSEND START(1)请阅读该程序,并写出注释。
(2)在emulator中输入以下代码,进行调试。
(3)请写出计算的结果是多少。
(4)请说明变量X,Y,Z和F的物理地址是多少。
4 实验报告:请采用标准的实验报告纸,按照以上实验要求完成实验报告,最后进行实验总结,给出在调试过程中遇到的问题以及如何实验2 简单程序设计实验题目:进一步熟悉指令系统和常用的伪指令,掌握简单程序设计的方法、熟悉逻辑运算指令与算术运算指令。
实验内容:编写一个32位无符号数除法的程序。
存放在NUM1中的32位无符号数与存放在NUM2中的16位无符号数相除,商和余数分别存放在NUM3和NUM4中。
数据段的定义如下以及除法程序片段如下所示。
写出该程序,并在emulator中调试这个程序。
数据定义片段:NUM1 DD 2A8B7654HNUM2 DW 5ABCHNUM3 DW ?NUM4 DW ?除法程序片段:MOV AX,WORD PTR NUM1MOV DX,WORD PTR [NUM1]+2DIV NUM2MOV NUM3,AXAND NUM4,DX实验知识点:伪指令,简单的程序设计,逻辑操作,算术运算指令实验报告:1、画出实验程序的流程图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理及应用实验指导书南京理工大学机械工程学院2011年10月10日实验1 基本操作实验1. 实验目的(1) 掌握TD-PITC 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
(2) 掌握使用运算类指令编程及调试方法;(3) 掌握运算类指令对各状态标志位的影响及其测试方法;(4) 学习使用软件监视变量的方法。
2. 实验设备PC机一台,TD-PITC 实验装置一套。
3. 实验内容及步骤通过对样例程序的操作,学会在TD-PITC境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会:●如何设置断点;●如何单步运行程序;●如何连续运行程序;●怎样查看寄存器的内容;●怎样修改寄存器的内容;●怎样查看存储器的内容;●怎样修改存储器的内容。
3.1 实验内容1――――BCD码转换为二进制数实验内容:将四个二位十进制数的BCD 码存放于3500H 起始的内存单元中,将转换的二进制数存入3510H 起始的内存单元中,自行绘制流程图并编写程序。
参考实验程序清单如下:SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: XOR AX, AXMOV CX, 0004HMOV SI, 3500HMOV DI, 3510HA1: MOV AL, [SI]ADD AL, ALMOV BL, ALADD AL, ALADD AL, ALADD AL, BLINC SIADD AL, [SI]MOV [DI], ALINC SIINC DILOOP A1A2: JMP A2CODE ENDSEND START实验步骤:1)运行Wmd86 软件,进入Wmd86 集成开发环境。
2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1所示。
语言选择后,下次再启动软件,语言环境保持这次的修改不变。
在这里,我们选择汇编语言。
图1-1 语言环境选择界面3)语言选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图1-2所示。
默认文件名为Wmd861。
图1-2 新建文件界面4)编写实验程序,如图1-3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。
图1-3 程序编辑界面5)点击,编译文件,若程序编译无误,则输出如图1-4所示的输出信息,然后再点击进行链接,链接无误输出如图1-5所示的输出信息。
图1-4 编译输出信息界面图1-5 链接输出信息界面6)连接PC与实验系统的通讯电缆,打开实验系统电源。
7)编译、链接都正确并且上下位机通讯成功后,就可以下载程序,联机调试了。
可以通过端口列表中的“端口测试”来检查通讯是否正常。
点击下载程序。
为编译、链接、下载组合按钮,通过该按钮可以将编译、链接、下载一次完成。
下载成功后,在输出区的结果窗中会显示“加载成功!”,表示程序已正确下载。
起始运行语句下会有一条绿色的背景。
如图1-6所示。
8)将四个二位十进制数的BCD 码存入3500H~3507H 中,即:将输出区切换到调试窗口,先键入E3500,然后输入01 02 03 04 05 06 07 08(每个数用空格隔开),如图1-7所示。
存储器在初始状态时,默认数据为CC。
9)点击按钮运行程序,然后再点击来停止程序运行,接下来观察程序运行结果,使用命令D3510 显示转换结果,应为:0C 22 38 4E。
10)反复输入几组数据,验证程序功能。
图1-7 内存地址单元数据图1-6 加载成功输出显示界面思考题:1)叙述修改实验数据有几种方法?这些方法各有什么特点?2)能否利用“调试窗口”直接对程序进行修改?3)在调试窗口中用什么命令查看和修改寄存器的内容、查看存储器的内容、修改存储器的内容?3.2实验内容2――――二进制双精度加法运算实验内容:计算X+Y=Z,将结果Z存入某存储单元。
实验程序参考如下。
本实验是双精度(2 个16 位,即32 位)加法运算,编程时可利用累加器AX,先求低16位的和,并将运算结果存入低地址存储单元,然后求高16 位的和,将结果存入高地址存储单元中。
由于低16 运算后可能向高位产生进位,因此高16 位运算时使用ADC 指令,这样在低16位相加运算有进位时,高位相加会加上CF中的1。
参考实验程序清单:SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSPUBLIC XH, XL, YH, YL, ZH, ZL ;设置全局变量DATA SEGMENTXL DW ? ;X低位XH DW ? ;X高位YL DW ? ;Y低位YH DW ? ;Y高位ZL DW ? ;Z低位ZH DW ? ;Z高位DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV AX, XLADD AX, YL ;X低位加Y低位MOV ZL, AX ;低位和存到Z的低位MOV AX, XHADC AX, YH ;高位带进位加MOV ZH, AX ;存高位结果JMP START ;在此行设置断点,以观察变量值CODE ENDSEND START实验步骤(1)编写程序,经编译、链接无误后装入系统;(2)程序装载完成后,点击‘变量区’标签将观察窗切换到变量监视窗口;(3)点击菜单条上,将变量XH,XL,YH,YL,ZH,ZL 添加到变量监视窗中,然后修改XH,XL,YH,YL 的值,如图1-7 所示,修改XH 为0015,XL为65A0,YH 为0021,YL为B79E;(4)在JMP START语句行设置断点,然后运行程序;(5)当程序遇到断点后停止运行,查看变量监视窗口,计算结果ZH 为0037,ZL为1D3E;思考题:1、如何利用E命令直接修改XH、XL、YH、YL变量的值,并求出ZL、ZH?2、直接修改源程序,将XH 为0015H,XL为65A0H,YH 为0021H,YL为0B79EH,求出ZL、ZH的值。
图1-7 变量监视窗口实验2 分支程序设计实验1 实验目的(1)掌握分支程序的结构;(2)掌握分支程序的设计、调试方法。
2 实验设备PC机一台,TD-PITC 实验装置一套。
3 实验内容及步骤设计一数据块间的搬移程序。
设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(成为目的数据块)。
源数据块和目的数据块在存储中可能有三种情况,如图2-1所示。
图2-1 源数据块与目的数据块在存储中的位置情况对于两个数据块分离的情况,如图2-1(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。
但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论:当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图2-1(b)所示。
当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图2-1(c)所示。
实验程序流程图如图2-2所示。
参考实验程序清单:SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV CX, 0010HMOV SI, 3100HMOV DI, 3200HCMP SI, DIJA A2ADD SI, CX图2-2 分支实验程序流程图ADD DI, CXDEC SIDEC DIA1: MOV AL, [SI]MOV [DI], ALDEC SIDEC DIDEC CXJNE A1JMP A3A2: MOV AL, [SI]MOV [DI], ALINC SIINC DIDEC CXJNE A2A3: JMP A3CODE ENDSEND START4 实验步骤:1)按流程图编写实验程序,经编译、链接无误后装入系统;2)用E 命令在以SI为起始地址的单元中填入16 个数;3)运行程序,然后再停止运行;4)通过D 命令查看DI为起始地址的单元中的数据是否与SI单元中数据相同;5)通过改变SI、DI 的值,观察在三种不同的数据块情况下程序的运行情况,并验证程序的功能。
5 思考题:试编写一个程序,该程序的功能是:当BL寄存器内容为0时,将0-255这256个数据按从小到大的顺序放入到以3100H为起始单元的地址中去;当BL寄存器内容为1时,将0-255这256个数据按从大到小的顺序放入到以3100H为起始单元的地址中去。
输入程序,编辑、调试通过,连接、下载、运行程序,查看结果。
实验3 排序程序设计实验1 实验目的(1)掌握分支、循环、子程序调用等基本的程序结构;(2)学习综合程序的设计、编制及调试。
2 实验设备PC机一台,TD-PITC 实验装置一套。
3 实验内容及步骤3.1 实验内容1――――气泡排序法实验内容:在数据区中存放着一组数,数据的个数就是数据缓冲区的长度,要求采用气泡法对该数据区中的数据按递增关系排序。
设计思想:(1)从最后一个数(或第一个数)开始,依次把相邻的两个数进行比较,即第N 个数与第N-1 个数比较,第N-1 个数与第N-2 个数比较等等;若第N-1 个数大于第N 个数,则两者交换,否则不交换,直到N 个数的相邻两个数都比较完为止。
此时,N 个数中的最小数将被排在N 个数的最前列。
(2)对剩下的N-1 个数重复(1)这一步,找到N-1 个数中的最小数。
(3)再重复(2),直到N 个数全部排列好为止。
参考实验程序清单:SSTACK SEGMENT STACKDW 64 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV CX, 000AHMOV SI, 300AHMOV BL, 0FFHA1: CMP BL, 0FFHJNZ A4MOV BL, 00HDEC CXJZ A4PUSH SIPUSH CXA2: DEC SIMOV AL, [SI]DEC SICMP AL, [SI]JA A3XCHG AL, [SI]MOV [SI+01H], ALMOV BL, 0FFHA3: INC SILOOP A2POP CXPOP SIJMP A1A4: JMP A4CODE ENDSEND START实验步骤:(1)分析参考程序,绘制流程图并编写实验程序;(2)编译、链接无误后装入系统;(3)键入E3000 命令修改3000H~3009H 单元中的数,任意存入10 个无符号数;(4)先运行程序,然后再停止程序运行;(5)通过键入D3000 命令查看程序运行的结果;(6)可以反复测试几组数据,观察结果,验证程序的正确性。