微机原理实验 源程序

合集下载

微机原理实验报告_2

微机原理实验报告_2

实验一汇编语言的编译、链接和调试一、实验目的1、学会使用masm对汇编源程序进行编译、链接、调试、运行。

2、掌握汇编语言的程序格式。

3、巩固所学的汇编语言指令。

二、实验环境1、硬件:PC 微机2、软件:宏汇编MASM 软件三、实验原理1、汇编语言程序的上机与处理过程2、汇编语言的程序格式(1)汇编程序一般由若干段组成,每个段都有一个名字,以SEGMENT作为段的开始,以ENDS作为段的结束,这两者前要冠以相同的名字作为段名。

(2)代码段和堆栈段必不可少,数据段和附加段可根据需要设置。

堆栈段的SEGMENT之后有关键字STACK。

代码段中有伪指令ASSUME告诉汇编程序,在各种指令执行时所要访问的各段寄存器将分别对应哪一段。

(3)源程序的每一段是由若干行汇编语句组成,每一行只有一条语句,且不能超过128个字符,但一条语句允许有后续行,最后均以回车结束。

(4)整个源程序必须以END语句结束,它通知汇编程序停止汇编。

四、实验内容进入DOS环境中相应的目录下。

如汇编软件的文件来为:D:\MASM,则对应的操作为(1)选择windows的“开始”→“程序”→“附件”→“命令提示符”(2)在DOS命令提示符下输入如下命令(其中带下划线部分为输入内容)。

C:\Documents and Settings\new>D:D:\>CD MASMD:\MASM>EDIT TEXT.ASM进入编辑程序,在其环境下输入编好的源程序,然后在盘上生成一个扩展名为.asm的文件。

程序示例DATA SEGMENTDA1 DB 10H,20H,30H,40HDA2 DB 0F0H,0B0H,0A0H,90HDA3 DB 00H,00H,00H,00HDATA ENDSSTACK1 SEGMENT PARA STACKDB 10 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATAMOV DS,AXMOV AL,[DA1]ADD AL,[DA2]MOV [DA3],ALMOV AL,[DA1+1]ADC AL,[DA2+1]MOV [DA3+1],ALMOV AL,[DA1+2]ADC AL,[DA2+2]MOV [DA3+2],ALMOV AL,[DA1+3]ADC AL,[DA2+3]MOV [DA3+3],ALCODE ENDSEND START3. 用宏汇编程序MASM,将扩展名为.ASM的源程序汇编成目标程序,即生成盘上扩展名为.OBJ的文件。

微机原理实验指导书

微机原理实验指导书

实验一 DOS命令与汇编源程序输入、汇编、连接、运行一、实验目的掌握在计算机上运行汇编语言程序的整个操作过程。

学会将自己编制的汇编语言源程序用EDIT编辑程序输入计算机并存盘;学会用MASM 宏汇编程序对汇编语言源程序进行汇编形成二进制目标文件;学会用LINK连接程序对二进制目标文件连接形成可执行文件;学会运行经汇编和连接后形成的可执行文件;学会用DEBUG调试程序运行和调试可执行文件。

二、实验设备1、PC系列不低于80286档次的微型机;2、DOS3.3以上版本的操作系统;3、EDIT,MASM,LINK,DEBUG执行程序。

三、实验步骤1、用EDIT编辑汇编源程序(1)MS-DOS Editor的启动与退出Editor是在DOS系统提示符下启动,其命令格式为:C:EDIT [Path] [filename]在编辑完成后,选择屏幕菜单的File命令(按“ALT+F”键)中的Exit项即可退出Editor。

(2)建立文本文件在MS-DOS Editor的屏幕菜单栏中File命令就是对文本文件的建立、存储和打印的操作。

A.建立文件(New)打开屏幕菜单栏中File下拉菜单,选择New项。

B.编辑文件将写好的汇编语言源程序输入到编辑文本区。

输入时,一行结束后按回车键(Enter)换行。

C.保存文件(Save)打开屏幕菜单栏中File下拉菜单,选择Save项在弹出的对话框中键入文件名。

如果要把文件保存到非默认路径下,则在键入文件名的同时键入路径。

D.打开文件(Open)打开屏幕菜单栏中File下拉菜单,选择Open项。

该窗口中有三个区可以选择要打开的文件:文件名区:可以直接键入要打开的文件名;文件表区:文件表中列出要打开的所有文件名,供用户选择;目录/磁盘区:键入的文件名是哪个磁盘目录中的,在该区中选择。

在Open对话框中用“Tab”或“Shift+Tab”键选择各区。

选完后按“OK”确定。

2.MASM宏汇编程序的使用方法(1)命令格式和功能命令格式:MASM文件名功能:对汇编语言源程序进行汇编形成二进制目标文件(2)操作过程在DOS下,将目录切换到汇编语言所在目录下,然后调入MASM宏汇编程序。

微机原理与接口技术实验报告-全实例代码

微机原理与接口技术实验报告-全实例代码

实验一上机练习实验目的:1、掌握用编辑软件编辑程序文本的方法。

在DOS环境下,熟练掌握用MASM5.0宏汇编程序对ASM文件进行编译、连接等操作步骤。

2、熟悉用DEBUG调试程序。

实验要求:选取教科书中一典型例题,用编辑软件在PC机中形成ASM文件,然后编译、连接,生成目标文件和可执行文件。

再用DEBUG程序进行调试。

实验步骤:实验程序如下:data segmentary1 db 12,34,45,56,67,78,89,90,18cont1 equ $-ary1 ;ary1的长度sum1 dw ?ary2 db 13h,24h,57h,68h,9ah,0bch,0cdh,0deh,80h,50hcont2 equ $-ary2sum2 dw ?data endscode segmentassume cs:code, ds:datastart: mov ax,datamov ds,axlea si,ary1mov cx,cont1 ;设定循环次数为ary1的个数call sumlea si,ary2mov cx,cont2call summov ah,4ch ;结束程序功能调用4CHint 21hsum proc ;求和程序段,求该段所有数之和xor ax,ax ;ax清零为下面加法准备next1: add al,[si]adc ah,0inc siloop next1mov [si],axret ;返回调用程序sum endp ;程序段结束code endsend start点击“运行”点击“编译成目标文件”,编译成功后,再“运行”=〉“生成可执行文件”,然后运行,即可。

运行成功以后,可进行调试。

点击工具栏的调试按钮,出现调试框。

其命令如下:输入a,进行逐行汇编,输入c,比较两内存块,输入d,内存信息以16进制显示;输入e,修改内存指定的字节;输入f,可以预置一段内存;输入g,执行程序;输入h,制算术运算;输入i,从指定端口地址输入;输入l,读盘;输入m,内存块传送;输入n,置文件名;输入o,从指定端口地址输出;输入q,结束DEBUG调试;输入r,显示和修改寄存器;输入s,查找字节串;输入t,跟踪执行;输入u,反汇编;输入w,存盘操作。

微机原理(单片机汇编)实验报告

微机原理(单片机汇编)实验报告

软件实验报告软件实验一一、实验目的1.熟悉软件实验的基本步骤和汇编程序的调试方法;2.了解内存块的移动方法;3.了解将十六进制数转换成ASCII值的方法。

二、实验原理用MOV和MOVX指令可以进行数据的赋值和移动,用循环可以完成大量数据的复制。

三、实验内容及步骤1、软件设置为模拟调试状态,在所建的Project文件中添加例程1的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。

打开CPU窗口,观察CPU窗口各寄存器的变化。

打开View菜单中的Memory Window,可以观察内部RAM、外部RAM的数据和程序存储器中的程序。

在Address窗口输入X:8000H后回车,观察8000H-800FF起始的256个字节单元的内容。

2、新建一个Project文件,添加例程2的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。

打开View菜单中的Memory Window,在Address 窗口的Memory#1输入X:3000H后回车,点击运行按钮后, 在Memory#2输入X:4000H后回车,观察外部RAM3000H和4000H中的内容。

3、添加将片内30H-3FH单元的内容复制片外片外1030H~103FH中的源程序,编译运行,观察比较30-3FH单元中的内容和片外1030H-103FH中的内容。

4、添加将30H、31H单元中的十六进制数,转换成ASCII码,存放到40H开始的4个单元中的源程序,编译运行,观察结果。

5、添加求内部RAM 30H—37H单元中8个无符号数的算术和的源程序,8个无符号数设定为25H,36H,4AH,65H,7FH,82H,9BH,1DH,观察39H,38H中的数字是否分别为02H,C3H。

四、实验结果1.步骤1的结果为8000H-80FFH的内容都为1.2.步骤2的结果为3000H起始的256个字节存储块与4000H起始的256个字节存储块各单元内数据对应相同。

微机原理实验3

微机原理实验3

《微机原理》上机实验第一次实验内容一、8086宏汇编系统盘构成1. masm.exe 宏汇编系统程序把汇编语言源程序(.asm)汇编成目标文件(.obj)2. link.exe 连接程序把目标文件(.obj)连接生成执行文件(.exe)3. cref.exe 索引程序4.Lib.exe 库管理程序5. 汇编源程序编辑工具。

二、8086宏汇编上机实验步骤第一步:编辑源程序(程序名.asm)Edit 程序名.asm(Alt+F 选择存盘)第二步:对源程序(.asm)进行汇编masm 程序名(提示两个0 ,表示源程序,程序名.asm编辑正确,否则需进入第一步,修改源程序)第三步:对目标文(.obj)件进行连接Link 程序名第四步:运行执行文件,查看结果程序名三、实验实例1、利用8086宏汇编语言,编程在屏幕上显示“Hello!”程序清单:Data segmentA db ‘Hello!$’Data endsCode segmentAssume cs:code,ds:dataStart:mov ax,dataMov ds,axLea dx, aMov ah,9Int 21hMov ah,4chInt 21hCode endsEnd start三、DEBUG上机1. DEBUG常用命令如何启动DEBUG?在DOS提示符下,输入命令DEBUG 回车出现_ 提示符,所有的DEBUG命令在_提示符下进行。

(1)汇编命令格式:A [地址](2)退出DEBUG命令格式:Q(3)文件命名格式:N 文件名(4)显示寄存器内容格式:R [寄存器名](5)写盘命令格式:W(6)运行命令格式:G(7)单步执行命令格式:T(8)反汇编命令格式:U实验二:利用DEBUG编程计算5+3,并显示结果。

程序指令清单Mov al, 5 Add al, 3 Mov dl, al Or dl,30 Mov ah,2 Int 21 Mov ah,4c Int 21《微机原理》实验3一、实验目的:通过本节课实验,使学生掌握DOS中断调用的格式以及DOS常用中断调用;掌握宏指令的定义及调用格式;掌握8086模块程序的定义及调用格式、对段间模块程序调用进行汇编的命令格式;掌握程序正常结束返回DOS的两种方法。

微机原理实验程序

微机原理实验程序

第四章 软件实验部分实验一 两个多位十进制数相减实验一、实验要求:将两个多位十进制数相减,要求被减数,减数均以ASCII 码形式按顺序存放在以DA T AI和DA T A2为首的5个内存单元中(低位在前),结果送回DA T AI 处。

处。

二、实验目的:1.学习数据传送和算术运算指令的用法。

.学习数据传送和算术运算指令的用法。

2.熟悉在PC 机上建立、汇编、链接、调试和运行汇编语言程序的过程。

机上建立、汇编、链接、调试和运行汇编语言程序的过程。

三、实验步骤:连好实验箱后接通电源,连好实验箱后接通电源,打开上位机软件打开上位机软件88TE 进入软件调试界面:进入软件调试界面:点击点击点击“文件“文件\打开”打开”文文件路径为C :\88TE\cai\asm\Ruanjian\Rjexp1.asm 。

具体操作如图所示:文件。

点击编译连接生成可执行的exe文件。

通过单步运行调试程序,打开寄存器查看其变量变化情况。

通过单步运行调试程序,打开寄存器查看其变量变化情况。

四、实验程序框图:五、实验程序:文件路径为C :\88TE\cai\asm\Ruanjian\Rjexp1.asm DA DATA SEGMENT TA SEGMENT DA DATA1 TA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)第一个数据(作为被减数) DA DATA2 TA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)第二个数据(作为减数) MES1 DB '-','$' MES2 DB '=','$' DA DATA ENDS TA ENDS STACK SEGMENT ;堆栈段堆栈段 STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT TA,SS:STACK,ES:DA ASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DAT T A START: MOV AX,DA TA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP ,AX MOV SI,OFFSET DATA1 MOV BX,05 CALL DISPL ;显示被减数显示被减数 MOV AH,09H LEA DX,MES1 INT 21H MOV SI,OFFSET DA T A2 MOV BX,05 ;显示减数显示减数 CALL DISPL MOV AH,09H LEA DX,MES2 INT 21H MOV SI,OFFSET DATA1 MOV DI,OFFSET DA T A2 CALL SUBA ;减法运算减法运算 MOV SI,OFFSET DA T A1 MOV BX,05 ;显示结果显示结果 CALL DISPL MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H 显示减数和被减数被减数和减数转换成十六进制数设 置 计 数 值 消除最低进位数 开 始制进位减 结果送被减数区调整偏移量 计数值-1=10 结果转换成ASCII 码字符串显示结果 结果INT 21H INT 21H MOV AX,4C00H INT 21H DISPL PROC NEAR ;显示子功能显示子功能DSI: MOV AH,02 MOV DL,[SI+BX-1] ;显示字符串中一字符显示字符串中一字符INT 21H DEC BX ;修改偏移量修改偏移量JNZ DSI RET DISPL ENDP SUBA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05 SU1: SUB BYTE PTR[SI+BX-1],30H SUB BYTE PTR[DI+BX-1],30H DEC BX ;将ASCII 码表示的数字串码表示的数字串 JNZ SU1 ;转化为十六进制的数字串转化为十六进制的数字串 MOV SI,DX MOV DI,BP MOV CX,05 ;包括进位,共5位CLC ;清进单位清进单位SU2: MOV AL,[SI] MOV BL,[DI] SBB AL,BL ;带进位相减带进位相减AAS ;非组合BCD码的减法调整码的减法调整 MOV [SI],AL ;结果送被减数区结果送被减数区 INC SI INC DI ;指向下一位指向下一位LOOP SU2 ;循环循环MOV SI,DX MOV DI,BP MOV BX,05 SU3: ADD BYTE PTR [SI+BX-1],30H ADD BYTE PTR [DI+BX-1],30H DEC BX ;十六进制的数字串转化ASCII码表示的数字串码表示的数字串 JNZ SU3 RET SUBA ENDP CODE ENDS END ST ART实验二 两个数相乘的实验一、实验要求:实现十进制数的乘法,实现十进制数的乘法,被乘数和乘数均以被乘数和乘数均以ASCII 码形式存放在内存中,码形式存放在内存中,算式结果在屏幕上显算式结果在屏幕上显示出来。

微机原理与汇编语言实验指导书

微机原理与汇编语言实验指导书

实验一显示程序[实验目的]1.掌握汇编语言程序上机的实验过程2.掌握显示程序的基本设计方法。

[实验原理]汇编语言上机过程1、建立汇编源程序(建立文件名.asm)(1)通过MD-DOS自带的EDIT.EXE文本编辑器进行输入和其它的文本编辑器进行录入、编辑,如可用c语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。

2、编译目标文件(即:编译为.obj .lst .crf文件)将正确的源代码编译为机器语言、程序清单及交叉引用表的目标文件。

如果此时程序有语句错误,系统将报错,并指出在第几行,什么类型的错误,可根据提示去逐一修改。

3、连接为可执行文件(即:连接为.exe 或.com文件)在DOS提示符下: LINK filename 回车4、运行编译好的可执行文件当4通过后,会产生一个可执行文件,这时只需运行这个程序,看它是否按你所想象那样得出结果。

在试运行期间,要尽量试一些临界状态,看程序是否运行稳定、结果是否正确,进行5。

5、用调试工具调试,重新修改(逻辑错误)用DOS中自带的调试程序DEBUG.EXE来进行程序调试、检查错误。

6.有关显示DOS基本命令1)单个字符显示命令将要显示的字符的ASCII码送给DL寄存器中断功能号2送AH寄存器,中断类型21H.如显示“3” MOV DL,33H 或 MOV DL, ‘3’如显示‘A’ MOV AH,‘A’MOV AH,2 MOV AH,2 MOV AH,2INT 21H INT 21H INT 21H 2)字符串显示命令将要显示的字符串所在存储区的首地址送给DX寄存器中断功能号9送AH寄存器,中断类型21H.如显示字符串“HELLO”存储区定义为 T DB“HELLO”,10,13,24H LEA DX,TMOV AH,9[实验方法及步骤] INT 21H1、编写实验程序。

2、编译。

3、运行(单步,跟踪),检查结果。

微机原理软件实验报告

微机原理软件实验报告

信息与通信工程学院微机原理软件实验报告班级:姓名:学号:日期:2011年12月实验一DEBUG的使用 (1)一、实验目的 (1)二、实验内容 (1)三、预习思考 (3)四、实验过程 (4)五、实验总结 (9)实验二分支、循环程序设计 (10)一、实验目的 (10)二、实验内容 (10)三、预习思考 (10)四、实验过程 (10)(一)、流程图 (11)(二)、源代码 (11)(三)、实验分析 (11)五、实验总结 (14)实验三代码转换程序设计 (15)一、实验目的 (15)二、实验内容 (15)三、预习思考 (15)四、实验过程 (16)(一)流程图 (16)(二)模块层次图 (16)(三)源代码 (17)(四)实验分析 (21)五、实验总结 (22)实验四子程序设计 (23)一、实验目的 (23)二、实验内容 (23)三、预习思考 (23)四、实验过程 (24)(一)流程图 (24)(二)模块层次图 (25)(三)源代码 (25)(四)实验分析 (34)五、实验总结 (35)实验五中断程序设计 (37)一、实验目的 (37)二、实验内容 (37)三、预习思考 (37)四、实验过程 (38)(一)流程图 (38)(二)源代码 (39)(三)实验分析 (45)五、实验总结 (46)实验一 DEBUG 的使用一、实验目的1.掌握汇编程序的编辑、编译、连接和执行的全过程;2.学习和掌握用DEBUG调试程序的方法。

二、实验内容1.用编辑软件,输入以下汇编语言源程序:DAT SEGMENTA DB 20B DB 15Y DB 3 DUP(0)Z DB 0,0DAT ENDSSTA SEGMENT STACKDW 50 DUP(?)STA ENDSCOD SEGMENTASSUME CS:COD,DS:DATSTAR PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATMOV DS,AXMOV AX,STAMOV SS,AXMOV AL,AMOV Z,ALMOV Z+1,ALCALL SUB1MOV AL,BMOV Z,ALMOV Z+1,ALCALL SUB1MOV AL,AMOV Z,ALMOV AL,BMOV Z+1,ALCALL SUB1ADD WORD PTR Y,AXADC BYTE PTR[Y+2],0RETSTAR ENDPSUB1 PROCMOV AL,ZMOV AH,Z+1MUL AHADD WORD PTR Y,AXADC BYTE PTR[Y+2],0RETSUB1 ENDPCOD ENDSEND STAR2.通过编译,连接形成可执行文件。

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

《微机原理及接口技术》实验指导书杨霞周林英编长安大学电子与控制工程学院2009年9月前言本实验指导是为适应各大、中专院校开设微机原理及应用方面的课程需做大量软硬件实验的需要而编写的,供学生编程用。

完成本实验指导中的实验,可使学生基本掌握8086/8088的结构原理、接口技术、程序设计技巧。

手册中详细叙述了各实验的目的、内容,列出了接线图、程序框图和实验步骤。

主要学习内容为80X86语言实验环境配置、汇编源语言格式、输出字符、循环结构、子程序调用,以及加减乘除等指令操作、通用接口芯片的接口编程与使用。

所有实验都是相互独立的,次序上也没有固定的先后关系,在使用本书进行教学时,教师可根据教学要求,选择相应实验。

学习结束后,要求学生能够独立编写出综合加减乘除等指令,以及循环结构、子程序调用等程序控制程序、看懂一般接口芯片电路图。

目录实验一清零程序 (4)实验二拆字程序 (6)实验三数据区移动 (8)实验四多分支程序设计 (10)实验五多字节减法运算 (13)实验六显示程序 (16)实验七 8251串口实验 (20)实验八步进电机控制 (26)附录一汇编语言的存储模型 (36)附录二 8279键值显示程序 (37)实验一清零程序一、实验目的掌握8088汇编语言程序设计和调试方法。

二、实验设备STAR系列实验仪一套、PC机一台。

三、实验内容把RAM区内4000H-40FFH单元的内容清零。

四、程序框图五、源程序清单.MODEL TINY.STACK 100.DATA.CODEORG 0100HSTART:MOV BX,4000HMOV AX,0000HMOV CX,80HL1: MOV [BX],AXINC BXINC BXLOOP L1JMP $END START六、实验步骤手动修改RAM区内4000H-40FFH的内容,连续或单步方式运行程序,检查4000-40FFH内容执行程序前后的变化。

七、思考1、把4000H-40FFH中的内容改成FF,如何修改程序。

2、把4000H-40FFH中的内容改成00~FF,如何修改程序。

实验二拆字程序一、实验目的掌握汇编语言设计和调试方法。

二、实验设备STAR系列实验仪一套、PC机一台。

三、实验内容把4000H单元的内容拆开,高位送4001H低位,低位送4002H低位,4001H、4002H 的高位清零,一般本程序用于把数据送显示缓冲区时用。

四、程序框图五、源程序.MODEL TINY.STACK.DATA.CODESTART:MOV BX,4000HMOV AL,[BX]MOV AH,ALMOV CL,4SHR AH,CLINC BXMOV [BX],AHAND AL,0FHINC BXMOV [BX],ALJMP $六、实验步骤手动修改4000H的内容,用连续或单步方式运行程序,检查4000H-4002H 中内容变化情况。

七、思考1.如何用断点方式调试本程序。

2.把4000H、4001H单元低位的内容合成一字送4002H单元。

实验三数据区移动一、实验目的掌握RAM中的数据操作。

二、实验设备STAR系列实验仪一套、PC机一台。

三、实验内容把4100H源RAM区首址内的16字节数据传送到4200H目标RAM区。

四、设计思想程序要求把内存中某一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。

源数据块和目的数据块在存储器中可能有三种情况,如下图:对于两个数据块分离的情况,如图(a),数据的传送从数据块的首址开始,或者从数据块的末址开始均可。

但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏。

可以得出以下结论:当源数据首址>目的块首址时,从数据块首址开始传送数据。

当源数据块首址<目的块首址时,从数据块末地址开始传送数据。

五、程序框图六、源程序清单.MODEL TINY.STACK.DATA.CODEORG 0100HSTART0:MOV CX,0010HMOV SI,4100HMOV DI,4200HCMP SI,DIJA A42ADD SI,CXADD DI,CXA41: DEC SIDEC DIMOV AL,[SI]MOV [DI],ALLOOP A41JMP $A42: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP A42JMP $END START0七、实验步骤调试运行3060程序,检查4100-410FH中内容是否和4200-420FH中内容完全一致。

八、思考1.把4200H源RAM区首址内的16字节数据传送到4100H目标RAM区。

2.把4100H源RAM区首址内的16字节数据传送到410AH目标RAM区。

实验四多分支程序设计一、实验目的掌握汇编语言的编程,熟悉程序散转的设计方法。

二、实验设备STAR系列实验仪一套、PC机一台。

三、实验内容编写程序,根据接收到的键值,作不同的处理。

四、设计思想多分支结构相当于一个多路开关,在程序设计中通常是根据某寄存器或某单元的内容进行程序转移。

在设计多分支转移程序时,如果分支太多,则平均转移速度太慢,本实验采用转移地址表实现多分支转移,可以提高平均转移速度。

五、程序框图散转程序流程框图六、实验步骤3、使用各种手段调试程序3、结果显示在G5区的数码管上七、源程序清单;调用GetKeyB返回键值,根据键值执行相应的程序.MODEL TINYEXTRN Display8:NEAR, GetKeyB:NEAR.STACK 100.DATABUFFER DB 8 DUP(?).CODESTART: MOV AX,@DATAMOV DS,AXMOV ES,AXNOPSTART1: CALL GetKeyB ;键值存放在AL中CMP AL,8JB START2XOR AL,AL ;大于7,作0处理START2: XOR AH,AHMOV BX,AXSHL BX,1LEA DI,Table_1JMP CS:[DI][BX]Table_1: DW Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7 Key0: MOV AL,1JMP KeyKey1: MOV AL,2JMP KeyKey2: MOV AL,3JMP KeyKey3: MOV AL,4JMP KeyKey4: MOV AL,5JMP KeyKey5: MOV AL,6JMP KeyKey6: MOV AL,7JMP KeyKey7: MOV AL,8JMP KeyKey: MOV CX,8LEA DI,BUFFERREP STOSBLEA SI,BUFFERCALL Display8MOV CX,60000LOOP $ ;延时JMP START1END START实验五多字节减法运算一、实验目的掌握BCD码、补码,熟悉多文件、多模块汇编语言程序设计的方法。

二、实验设备STAR系列实验仪一套、PC机一台。

三、实验内容从键盘上输入4位被减数、减数,实现双字节BCD码(四位数)的减法,结果显示在数码管上;进一步熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、CS段、DS段存贮器的各种方法。

四、程序框图双字节十进制减法程序框图五、实验步骤123、结果显示在G5区的数码管上六、源程序清单.MODEL TINYEXTRN Display8:NEAR, GetBCDKey:NEAREXTRN F1:BYTE.STACK 100.DATABUFFER DB 8 DUP(?)minuend DW 1 DUP(?) ;被减数subtrahend DW 1 DUP(?) ;减数.CODESTART:MOV AX,@DATAMOV DS,AXMOV ES,AXNOPMOV F1,0 ;先清除显示,再接收键输入START1:LEA DI,minuendMOV CX,4 ;按键次数CALL GetBCDKey ;得到双字节十进制数(被减数)MOV F1,1 ;接收到第一个键,才清除显示LEA DI,subtrahendMOV CX,4 ;按键次数CALL GetBCDKey ;得到双字节十进制数(减数)MOV AX,minuendMOV BX,subtrahendMOV DL,10HCMP AX,BXJNB START2XCHG AX,BXMOV DL,11H ;负数START2:SUB AL,BL ;低位DASXCHG AL,AHSBB AL,BH ;高位DASXCHG AL,AHCLDLEA DI,BUFFER ;存放显示结果CALL B1toB2 ;低位MOV AL,AHCALL B1toB2 ;高位MOV AL,10H ;最高三位消隐STOSBSTOSBSTOSBSTOSBLEA SI,BUFFER+3MOV CX,3CALL BlackDisplay ;将高位0消隐LEA SI,BUFFERCALL Display8JMP START1;将一个字节压缩BCD码转换成二个字节非压缩BCD码B1toB2PROC NEARPUSH AXAND AL,0FHSTOSBPOP AXAND AL,0F0HROR AL,4STOSBRETB1toB2ENDPBlackDisplay PROC NEAR ;将高位0消隐BlackDisplay1:MOV AL,[SI]CMP AL,0JNZ ExitMOV AL,10HMOV [SI],ALDEC SILOOP BlackDisplay1Exit:CLDMOV [SI+1],DLRETBlackDisplay ENDPEND START七、思考从键盘上输入4位被加数、加数,实现双字节BCD码(四位数)的加法,结果显示在数码管上。

实验六显示程序一、实验目的1、熟悉8255的功能,理解LED显示原理及控制方法;2、学会使用LED点阵液晶显示字体和图形;3、认真预习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。

二、实验设备STAR系列实验仪一套、PC机一台。

三、实验内容1、编写程序,用8255的PA、PB口控制LED的位选和段选,(1)控制8位数码管依次显示0;(2)编写程序,控制8位数码管依次显示任意指定字符(0-F);(3)编写程序,控制8位数码管同时显示0、1、……F;2、按图连接线路,运行程序,观察实验结果。

四、实验原理图接PB接8255PA五、实验步骤六:源程序(1) 控制8位数码管依次显示0;.MODEL TINY.STACK 100.DATAIO8255_Con EQU 0F003H ;CS3控制字端口地址IO8255_A EQU 0F000H ;A数据口IO8255_B EQU 0F001H ;B数据口LED_TAB: DB 03FH,06H,05BH,04FH,66H,6DH,7DH,07HDB 07FH,6FH,77H,7CH,39H,05EH,79H,71H ;存储要显示的数码管的值,B口的8位分别对应7位数码管的abcdefg.CODESTART: MOV AX,@DATA;单片机寻址方式,地址怎样传到DATA中的MOV DS,AX ;初始化数据段寄存器MOV ES,AX ;初始化附加段,这一句不需要MOV DX,IO8255_Con ;控制字地址送DXMOV AL,80H ;方式0,A,B,C均为输出OUT DX,ALMOV AL,0FEH ; 8255 PC输出,输出0FEH到A口MOV CX,8GOON: MOV DX,IO8255_A ;位选,就是片选,选择哪一个LED组OUT DX,AL ;1111 1110输出到A口ROL AL,1 ;循环左移1位,最低位的0移动1位到高位,进行片选用MOV AH,AL ;AL当前值送AH暂存,因为AL还要用于B口数据送DX。

相关文档
最新文档