微机原理实验指导书(软件)
- 格式:doc
- 大小:72.00 KB
- 文档页数:10
微型计算机原理实验指导书河北大学电子信息工程学院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所示。
第一部分汇编语言程序设计实验实验一汇编语言编程基础运行CmdC:cd..cd.cd..cd masmmasmdebug2000汇编语言是一种面向机器的“低级”语言,是计算机能够提供给用户的最快而最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
要真正理解计算机的工作过程,理解计算机程序的执行过程,就必须学习汇编语言。
也正是因为如此,汇编语言程序设计是计算机专业和电子,自动控制等相关专业的重要课程。
但是,对于刚开始学习汇编语言的学生而言,汇编语言的一些命令非常抽象,很难理解,往往学习了很长时间也编不出满意的程序,更别说自如的应用,以致我们认为汇编语言很难掌握,影响我们学习汇编语言的兴趣。
实际上,为了掌握好汇编语言,我们可以从熟悉、使用DEBUG调试工具开始,先来分析和读懂一些与硬件相关的小程序,这也是我们实验一的目的。
汇编语言程序的上机步骤以下列源程序为例,先学习汇编语言的上机步骤。
文件名为:DATA SEGMENTNUM1 DB 35,35HNUM2 DW 35,35HNUM3 DB 4 DUP (34,3 DUP (34H))NUM4 DB '34AB'NUM5 DW '34','AB'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV BX,OFFSET NUM1MOV AL,[BX]MOV BX,OFFSET NUM5MOV AX,[BX]MOV AH,4CHINT 21HCODE ENDSEND START一.上机步骤汇编语言程序MASM软件由编辑器,汇编程序,连接程序以及调试程序四个部分组成。
汇编语言编制完成后,在计算机上的操作过程就分为四个阶段。
1. 编辑首先输入源程序,有两种方法:(1)在记事本里录入,特别注意的是:在保存时文件格式必须选择所有文件,文件后缀名为.ASM, 即保存时文件名为。
微机原理实验指导书华中科技大学计算机学院武汉豪申光电新技术有限公司目录微机原理实验 (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⑹实验要求◇按要求完成实验得出正确结果.◇试着自己写出人机对话方式的汇编程序.◇完成实验报告实验二分支程序设计实验⑴实验目的掌握分支程序的结构。
8086微机接口实验指导书微机原理与接口实验指导书成都工业学院机电工程系软件实验实验序号软件实验名称入口地址页码实验一清零程序3000H 4 实验二拆字程序3020H 5 实验三拼字程序3040H 6 实验四数据区移动3060H 7 实验五数据排序实验3090H 9 实验六找“零”个数30B0H 10 实验七32位二进制乘法30D0H 11 实验八多分支程序3130H 12 实验九显示子程序31E0H 13 实验十键盘扫描显示实验联机操作14 实验十一二进制转换到BCD 联机操作15 实验十二二进制转换到ASCII 联机操作168086微机接口实验指导书硬件实验实验序号硬件实验名称入口地址页码实验一8255并行口实验㈠:A.B.C口输出方波32C0H 17 实验二8255并行口实验㈡:PA口控制PB口32E0H 18 实验三8255并行口实验㈢:控制交通灯32F0H 19 实验四简单I/O口扩展3380H 20 实验五A/D转换实验3390H 23 实验六D/A转换实验㈠:输出方波33E0H 25 实验七D/A转换实验㈡:输出锯齿波33F0H 27 实验八8259中断控制器实验3400H 28 实验九定时/计数器:8253方波3490H 30 实验十继电器控制34B0H 32 实验十一8251串行通信实验㈠:自发自收35C0H 33实验十二8251串行通信实验㈡:与PC通信8251r.asm8251t.asm35实验十三步进电机控制3620H 38 实验十四小直流电机调速实验3670H 39 实验十五温度闭环控制联机操作40 实验十六音频控制联机操作41软件实验本节共编了12个软件实验,通过这些程序的调试使学生熟悉8088/86的指令系统,了解程序设计过程,掌握汇编语言设计方法以及如何使用实验系统提供的调试手段来排除程序错误。
实验一清零程序一、实验目的掌握8088汇编语言程序设计和调试方法,熟悉键盘操作。
实验一数据传送实验目的:1.熟悉8086指令系统的数据传送指令及8086的寻址方式。
2.利用TurboDebugger调试工具来调试汇编语言程序。
实验任务:1.通过下述程序段的输入和执行来熟悉TurboDebugger的使用,并通过显示器屏幕观察程序的执行情况。
练习程序段如下:MOVBL,08HMOVCL,BLMOVAX,03FFHMOVBX,AXMOVDS:[0020H],BX2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。
压栈程序段如下:MOVAX,0102HMOVBX,0304HMOVCX,0506HMOVDX,0708HPUSHAXPUSHBXPUSHCXPUSHDX出栈程序段请自行编写(用不同的出栈顺序)。
3.指出下列指令的错误并加以改正,上机验证之。
(1)MOV[BX],[SI](2)MOVAH,BX(3)MOVAX,[SI][DI](4)MOVBYTEPTR[BX],2000H(5)MOVCS,AX(6)MOVDS,2000H4.设置各寄存器及存储单元的内容如下:(BX)=0010H,(SI)=0001H(10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H(10120H)=0ABH,(10121H)=0CDH,(10122H)=0EFH说明下列各条指令执行完后AX寄存器中的内容,并上机验证。
(1)MOVAX,1200H(2)MOVAX,BX(3)MOVAX,[0120H](4)MOVAX,[BX](5)MOVAX,0110H[BX](6)MOVAX,[BX][SI](7)MOVAX,0110H[BX][SI]5.将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。
试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。
第一部分调试程序 DEBUG1.DEBUG 的调用格式:[drive:] [path] debug [d:] [path] [filename.ext]example: 调入1)debug ↓2)debug↓-N ↓-L↓2.退出DEBUG-Q↓3.DEBUG 的子命令1)相关的CPU 寄存器,FLAGS寄存器标志位状态,驱动器号标志码(1)驱动器编号编号磁盘属性0 A 软盘1 B 软盘2 C 硬盘(2)命令中使用地址。
段地址:偏移量example:CS:0100段地址:始偏移量末偏移量example:CS:0100 0110段地址:始偏移量长度example:CS:0100 L10 (3)不调入文件时,IP 为0100。
(4)SP 指向栈底。
(5)不调入文件时,AX、BX、CX、DX、SI、DI、BP为0。
当调入文件时,文件长度装入CX,大于64K时,其长度高位装入BX,均以字节为单位。
(6)CS、DS、SS、ES位于内存空间对应段的底部,既DEBUG程序后的第一段。
(7)FLAGS 寄存器标志位为NV(无溢出)UP(方向为增)EI (中断允许)PL(符号为正)NZ (非零)NA (无辅助进位)PO(奇)NC(无进位)(8)DEBUG 子命令有:A (汇编);U (反汇编);G(运行);T(跟踪);R(寄存器显示与修改);D(内存显示);E(内存修改);S(查找);F(填充);M (数据移动);C(数据比较);N(文件命名);W(存盘);L(装入);I(端口输入);O (端口输出);H(十六进制运算);Q(退出)。
格式:R[寄存器名]功能:显示或修改CPU寄存器的内容,包括:AX BX CX DX ;CS DS SS ES ;SP SI BP DI IP FLAGS FLAGS 符号表标志位名置位复位O OV NVD DN UPI EI DIS NG PLZ ZR NZA AC NAP PE POC CY NCExample:-R ↓;立即显示各寄存器的内容-R BX↓;显示并修改BX的内容BX 0000:0100↓-RF ↓OV DN EI NG ZR AC PE CY- PONZ↓格式:A[起始地址]功能:从始地址汇编并把指令变成机器码;不指定始地址,默认为当前的CS:连续地址。
一、实验目的1.掌握存储器读写方法2.了解存储器的块操作方法、实验原理存储器读写和块操作三、实验设备仪器及材料计算机,WAVE 6000软件data endscode segme ntassume cs:code, ds:datastart proc n earmov ax, datamov ds, axmov bx, offset Block ;起始地址movcx, 256 ; 清256字节Againmov [bx], byte ptr 0inc bx;地址+1Loop Agai n ;记数减一jmp $ ; 死循环code endsend start四、实验过程Sl.asm data segme nt Block db 256 dup(55h) 代码流程图(1)进入Wave6000,输入程序并检查,保存程序。
⑵“编译”程序。
(3) “全速执行”程序。
⑷“暂停”程序运行,在“数据窗口( MEMOREY )”查看0400H 起始的单元 内容,并记录。
(5)在指令“jmp $”处设断点。
“全速执行”程序。
⑹ 在“数据窗口( MEMOREY )”查看0400H 起始的单元内容,记录并分析实 验结果。
六、实验结果及总结 1、在“数据窗口( MEMOREY )”查看0400H 起始的单元内容 运行前:2、调试:如何将存储器块的内容置成某固定值(例全填充为0FFH) ?总结:通过本实验,我了解到单片机读写存储器的读写方法, 同时也了解到单片 机编程,调试方法。
学会内存的移动方法,也加深对存储器读写的认识。
实验步骤运行后:511H C \UB200Qf \E X&6ASM \S1. ASM(0400 00 0G 00 00 (I) 00 00 CO 00 00 041000 00 00 OG oo 10420 00 □0 00 oo □0 關皿 00 GO oo □0 0440 oa 00 00 oo oo00 □0 co oo oo 0400 00 00 DC oo □.1JJ00 00 0D □0 00 oo_ tJ D 00 oa tK 00 aoon XJ 00 (K 0D oo00 00 co 00 00 oo00 00 co (K ) 00 ooC - \LAB2000F\EXS6kSM \51. ASM地址:0400)(oa 00 W W 00 OO^d r.实验课程名微机原理实验成绩实验项目名称实验二、二进制到BCD码转换指导老师、实验目的1. 了解BCD值和ASCII值的区别2.了解如何将BCD值转换成ASCII值。
微机原理与接口技术STM32实验指导书V2.0龙岩学院物理与机电工程学院电子工程系2016.3实验一GPIO 模块实验一、实验目的1、学习S TM32 模块的G PIO 模块的配置2、学习S TM32 模块的输入输出功能的实验二、实验原理1 、S TM32 的 IO 口相比 51 而言要复杂得多,所以使用起来也困难很多。
首先S TM32 的IO 口可以由软件配置成如下8种模式:输入浮空、输入上拉、输入下拉、模拟输入、开漏输出、推挽输出、推挽式复用功能、开漏复用功能。
STM32 的每个 IO 端口都有 7 个寄存器来控制。
他们分别是:配置模式的 2 个 32 位的端口配置寄存器C RL 和C RH;2 个32 位的数据寄存器I DR 和O DR;1 个32 位的置位/复位寄存器 BSRR;一个16 位的复位寄存器B RR;1个32 位的锁存寄存器L CKR。
刚复位后,复用功能未开启,I/O 端口被配置成浮空输入模式STM32 的CRL 控制着每组 IO 端口(A~G )的低8 位的模式。
每个 IO 端口的位占用C RL 的4个位,高两位为C NF,低两位为M ODE。
这里我们可以记住几个常用的配置,比如0X0 表示模拟输入模式(ADC 用)、0X3 表示推挽输出模式(做输出口用,50M 速率)、 0X8 表示上/下拉输入模式(做输入口用)、0XB 表示复用输出(使用I O 口的第二功能,50M 速率)。
CRH 的作用和C RL 完全一样在固件库开发中,操作寄存器C RH 和C RL 来配置I O 口的模式和速度是通过G PIO 初始化函数完成:void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);第一个参数是用来指定G PIO,取值范围为G PIOA~GPIOG。
第二个参数为初始化参数结构体指针,结构体类型为G PIO_InitTypeDef。
微机原理及应用实验指导书福建农林大学机电工程学院电气系2006年7 月1 日目录引言 (3)实验一学习WAVE6000软件的使用 (4)实验二了解MCS-51内部资源 (6)实验三传送类指令编程 (7)实验四算/逻类指令编程 (8)实验五控制转移类指令编程 (9)实验六综合编程 (10)附录一实验报告基本要求与书写格式 (11)附录二伟福软件使用说明 (12)引言本课程是在学生学完电子技术类基础课程和微机应用类基础课程之后,为加强对学生技术应用能力的培养而开设的体现电子技术、计算机技术综合应用的综合性课程。
单片机实践性强,理论与实际结合紧密,学好这门课程的一个重要环节就是实践和实验。
通过上机操作和认真实验,既可以加深对书本知识的理解,又可以培养同学们的动手能力。
通过这些实验,希望同学们掌握以下知识:1.掌握伟福软件模拟器的使用方法,能利用伟福软件进行程序调试,掌握程序调试的各种方法。
2.了解单片机的组成部分、各类存储单元的特性、地址分配、地址与存储单元的关系,以及微计算机中使用的十六进制数、字节和对应的二进制数间的方法。
3.熟悉MCS-51的指令系统,了解软件设计过程,掌握汇编语言设计方法,能够编写顺序、选择、循环结构的小程序,并使用仿真器提供的调试手段来排除软件错误。
实验一:学习WAVE6000软件的使用(验证性、1 学时)一、实验目的:1.掌握WAVE6000软件的使用方法;2.掌握程序编辑、运行、变量观察等方法;3.掌握子程序与程序段调试、测试方法。
二、实验方法:上机操作三、实验仪器: PC机四、实验步骤:1.Wave6000的启动、退出。
2.设置伟福汇编器:设置软件模拟仿真方式,选择E600/L仿真器和51仿真头。
3.打开跟踪调试的窗口(片内RAM、片外RAM、CPU、REG、SFR),适当组织使之便于观察。
4.了解地址和单无内容的对应关系。
5.点击窗口中的小格子修改单元的值, 注意输入值的进制与后缀。
1 实验一 系统认识与数码转换实验 一、实验目的 1.学习汇编语言的开发过程。 2.熟练掌握DEBUG调试程序。参考书后附录E
二、实验设备 PC机一台
三、实验内容及步骤 1.系统认识实验 在内存缓冲区BUFF中存储0-F共16个字节数据,实验参考程序如下: DATA SEGMENT BUFF DB 16 DUP (?) ;定义数据段 DATA ENDS
CODE SEGMENT ;定义代码段 ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV DI,OFFSET BUFF ;设置缓冲区首址 MOV CX,16 ;字节数送入CX中 MOV AL,0 A1: MOV [DI],AL ;写入一字节 INC DI ;修改地址指针 INC AL ;修改数据 LOOP A1 ;未填完循环 MOV AH,4CH INT 21H CODE ENDS ;代码段结束 END START ;程序结束 2
实验步骤: (1)把实验用的相关软件拷贝到PC机中,比如D盘的HUIBIAN文件夹(D:\HUIBIAN)。 (2)进入DOS环境(开始\程序\附件\‘C:\命令提示符’),进入路径D:\HUIBIAN。 (3)编辑,启动编辑软件EDIT,输入源程序,检查无误后存盘,如文件名11.ASM。 (4)汇编,即键入MASM 11.ASM回车,通过后应生成文件11.OBJ。 (5)连接,即键入LINK 11.OBJ回车,通过后应生成文件11.EXE。 (6)调试,即键入DEBUG 11.EXE,进入调试软件DEBUG来调试源程序。DEBUG的用法可参考教材的附录E。 (7)运行程序,观察结果是否正确。
2.数码转换实验 将十进制数的ASCⅡ码转换为BCD码。设五位十进制数的ASCⅡ码已存放在内存缓冲区BUF1中,转换为 BCD 码后,再分别存入内存缓冲区BUF2中。提示:一字节ASCⅡ码取其低四位即变为BCD码。实验程序如下: DATA SEGMENT BUF1 DB 31H,32H,33H,34H,35H ;定义数据段 BUF2 DB 5 DUP (?) DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX, 5 ;循环计数器赋初值 MOV SI,OFFSET BUF1 ;ASCⅡ码首址 MOV DI,OFFSET BUF2 ;BCD码首址 A1: MOV AL,[SI] ;送ASCⅡ码至AL CMP AL,3AH ;比较AL与3A JAE A2 ;大于3A则转A2 SUB AL,30H ;小于3A则取ASCⅡ码低4位 JB A2 ;小于30则转A2 MOV [DI],AL ;保存结果 A2: INC SI INC DI LOOP A1 3
MOV AH,4CH INT 21H CODE ENDS END START
实验步骤 (1) 输入源程序,进行汇编、连接。 (2) 进入DEBUG运行程序,观察结果是否正确。 (3) 反复试几组数,并运行程序,观察结果。 4
实验二 顺序程序设计 一、实验目的 1.进一步熟悉汇编语言的开发过程。 2.掌握顺序程序的设计方法。
二、实验设备 PC机一台
三、实验内容及步骤 1.二进制双精度加法运算 计算X+Y=Z,实验程序如下: DATA SEGMENT XL DW ? ;请在此处给X低位赋值 XH DW ? ;请在此处给X高位赋值 YL DW ? ;请在此处给Y低位赋值 YH DW ? ;请在此处给Y高位赋值 ZL DW ? ZH DW ? DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,XL ;X低位送AX ADD AX,YL ;X低位加Y低位 MOV ZL,AX ;存低位和 MOV AX,XH ;X高位送AX ADC AX,YH ;X高位加Y高位 MOV ZH,AX A1: JMP A1 CODE ENDS END START 5
本实验程序是双精度(2个16位,即32位)运算,利用累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。
实验步骤 (1) 输入源程序,进行汇编、连接。 (2) 进入DEBUG运行程序,观察结果是否正确。 (3) 修改源程序,反复试几组数,运行程序观察结果。
2.将一字节压缩BCD码转换为两个ASCII码 实验参考程序如下: DATA SEGMENT BCDBUF DB 96H ASCBUF DB 2 DUP (?) DATA ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,BCDBUF MOV BL,AL MOV CL,4 SHR BL,CL ADD BL,30H MOV ASCBUF,BL AND AL,0FH ADD AL,30H MOV ASCBUF+1,AL MOV AH,4CH INT 21H CODE ENDS END START 6
实验步骤 (1) 阅读程序,给程序加上注释。 (2) 输入源程序,进行汇编、连接。 (3) 进入DEBUG运行程序,观察结果是否正确。 (4) 修改源程序,反复试几组数,运行程序观察结果。
3.编写程序 计算AB+CD,其中A、B、C、D均为有符号字数据。 7 实验三 分支程序设计实验 一、实验目的 1.掌握分支程序的结构。 2.掌握分支程序的设计、调试方法。
二、实验设备 PC机一台
三、实验内容及步骤 1.求无符号字节序列中的最大值和最小值 设内存缓冲区BUFF中存有10个字节无符号数,试编程求出其中的最大值和最小值,分别存于MAX和MIN单元中。实验程序如下: DATA SEGMENT BUFF DB …… ;此处填写10个具体的数据 MAX DB ? MIN DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,10 MOV SI,OFFSET BUFF MOV CX,10 MOV BH,[SI] MOV BL,BH A1: MOV AL,[SI] CMP AL,BH JBE A2 MOV BH,AL JMP A3 A2: CMP AL,BL JAE A3 8
MOV BL,AL A3: INC SI LOOP A1 MOV MAX,BH MOV MIN,BL MOV AH,4CH INT 21H CODE ENDS END START
实验步骤 (1) 阅读程序,给程序加上注释。 (2) 输入源程序,进行汇编、连接。 (3) 进入DEBUG运行程序,观察结果是否正确。 (4) 修改源程序,反复试几组数,运行程序观察结果。
2.设在变量单元A、B和C中存放有三个数,若三个数都不为0,则求出三个数之和存入D单元中;若有一个为0,则将其它两个单元也清0,试编写程序。
3.十个学生的成绩分别为56、69、84、82、73、88、98、63、100和80分,依次存放在字变量GRADE中,试编制程序,统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的人数,并分别存放在S5、S6、S7、S8、S9及S10单元中。 9
实验四 循环程序设计 一、实验目的 1.加深对循环结构的理解。 2.掌握循环结构程序设计的方法。 3.熟练掌握调试循环程序的方法。
二、实验设备 PC机一台
三、实验内容及步骤 1.求某数据区内负数的个数 设数据区SHUJU的第一单元存放数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得区内所包含负数的个数。实验程序如下: DATA SEGMENT SHUJU DB …… ;此处按要求填写具体的数据 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DI,OFFSET SHUJU ;设数据区首址 MOV CL,[DI] ;送数据个数 XOR CH,CH ;CH清0 MOV BL,CH ;BL 清0 INC DI ;指针指向第一个数据 A1: MOV AL,[DI] TEST AL,80H ;数据首位是否为1 JE A2 INC BL ;负数个数累加 A2: INC DI LOOP A1