微机原理实验讲义.ppt
58页微机原理实验讲义说明本讲义只包括汇编语言的软件设 计实验而不包括硬件实验共安排五 个实验,内容涉及8086/8088寻址方式 和指令系统练习、顺序、分支、循环 三种结构的程序实现,dos功能调用等 每个实验都给出源程序供参考,并 在实验后给出思考题,以此促进学生 对程序的理解同时还给出实验练习 题,作学生课下练习使用,每个练习 都给予了适当提示目录•实验一 汇编语言的编译、链接和调试•实验二 8086/8088寻址方式和指令系统练 习•实验三 学生成绩统计程序•实验四 数码转换程序•实验五 冒泡法排序程序•附录1 DEBUG部分调试命令•附录2 ASCII码表•附录3 部分DOS系统功能调用实验一 汇编语言的编译、链 接和调试•实验目的•实验环境•实验内容•实验练习•思考题一、实验目的•学会使用masm6.11对汇编源程序进 行编译、链接、调试、运行•掌握汇编语言的程序格式•巩固所学的汇编语言指令二、实验环境•32位PC、MASM6.11软件三、实验内容1、MASM6.11的安装、设置步骤(1)找到MASM6中DISK1的SETUP.EXE程 序,按照提示安装该软件包,可以安装在 硬盘的任何一个分区。
(2)假设安装在D盘,那么安装完成后在目录 D:\MASM611\INIT\中有一个名为 TOOLS.PRE的文件,复制该文件并改名为 TOOLS.INI. (3)运行D:\MASM611\BIN下面的集成开发 环境PWB4)在PWB环境中,选择Options菜单,打开 Build Options命令,选择生成可执行文件 为调试类型 (5)开始编写程序或者调入已有的程序 (6)写好程序后,选择相应菜单中命令进行汇 编,链接,调试,如果有错误进行修改2、程序示例: 屏幕上显示“hello,world !” (1)打开PWB,弹出如下界面,输入以下源程序,然后保存:•DATA SEGMENT ;定义一个数据段• STRR DB 'HELLO,WORLD!$' ;定义一个数据区存放字符 串•DATA ENDS •STACK SEGMENT STACK• DB 200 DUP(?)•STACK ENDS • CODE SEGMENT • ASSUME CS:CODE,DS:DATA • ;定义CODE段为代码段,DATA段为数据 段•START:• MOV AX,DATA• MOV DS,AX• LEA DX,OFFSET STRR ;取数据区的首地址偏移量给DX• MOV AH,09H ;调用DOS中断,显示HELLO,WORLD!字 符串• INT 21H• MOV AH,4CH ;返回DOS• INT 21H• CODE ENDS• END START(2)对汇编源文件进行汇编,汇编 成功后生成二进制目标文件.obj。
方 法是鼠标选择project compile file,若无语法错误,则会出现如下提 示,回车后可进行连接;若有错误, 则按V查看错误信息,修改程序直到 无错误3)对目标文件进行连接,连接成功 后生成可执行性程序.exe操作方法 是点击project菜单下的build项,若 连接成功,则出现如下提示,同时生 成.exe文件 •(4)运行可执行性文件,得到运行结 果操作方法是点击Run菜单,选择 execute•运行后得到如下结果:(5)使用调试工具codeview 操作方法:点击Run菜单,选择debug 出现codeview调试器窗口如下:1区显示的是指令存放的段地址和偏移量,中间2 区显示的是指令的机器码最右侧的3区显示的是反 汇编代码 123•查看寄存器的值ALT+7)选择Windows菜单下的register,则弹出寄存器 窗口,可以查看寄存器内容,如下图所示:•查看存储区域的内容(ALT+5)选择windows菜单下的 memory1,弹出存储器窗口如下,缺 省显示数据段• 若要显示代码段,则可选择 options菜单下的memory1 window…,出现如下所示的窗口, 把address expression栏中的DS修改 为CS,再次重复(2)的步骤,就可 以观察代码段的内容了。
可用类似的 方法观察其他段的存储情况改为CS•用按键执行调试命令:F8:跟踪执行;F10:单步执行;F5:全速执行程序复位:用鼠标点击Run菜单下restart设置断点:鼠标双击指令行•debug命令的使用Codeview 调试器的命令与 Debug 命令 类似,在此也可以按 Debug 中的调试方法对 程序进行调试操作方法是在codeview调试器 界面下选择windows菜单项中的 command,或直接按alt+9,出现的 命令行如下Debug命令定义见附录1四、实验练习1、编写一个程序,把缓冲区BUF1中连 续30个字节置77H提示:可利用LEA指令把BUF1的偏 移量提取到偏移地址寄存器中,再使 用寄存器间址方式访问存储单元 2、编写程序,计算式子(W*X)/(Y+6) ,商放在 Z 中,余数放在 R 中其中 X,Y,Z,R 和 W 为存放16位带符号数单 元的地址五、思考题完成实验练习,通过观察寄存器 和存储器结果,验证程序设计是否正 确实验二 8086/8088指令系统 和寻址方式练习•实验目的•实验环境•实验内容•思考题一、实验目的•熟悉8086/8088指令系统和寻址方式•进一步掌握MASM6.11的基本使用方 法 二、实验环境•32位PC、MASM6.11软件三、实验内容观察下列源程序中的每条指令执 行后,寄存器和存储器中内容的变化 情况。
然后看此变化和自己对指令分 析的结果是否一致,并完成表1内容1、实验源程序 STACK1 SEGMENT STACKDB 0B0H,0B1H,0B2H,0B3H,0B4H, 0B5H,0B6H,0B7HDB 0B8H,0B9H DB 0BAH,0BBH,0BCH,0BDH,0BEH ,0BFHDB 10H DUP(0) STACK1 ENDS DATA1 SEGMENTDB 0A0H,0A1H,0A2H,0A3H,TABLE1 DW 0A5A4HDB 0A6H,0A7H,0A8H,0A9H, 0AAH, 0ABHDB 0ACH, 0ADH, 0AEH, 0AFH DATA1 ENDS DATA2 SEGMENT DB 0C0H, 0C1H, 0C2H, 0C3H, 0C4H, 0C5H, 0C6H, 0C7H DB 0C8H, 0C9H, 0CAH, 0CBH, 0CCH, 0CDH, 0CEH,0CFH DATA2 ENDS CODE SEGMENTASSUME CS:CODE, DS:DATA1,ES:DATA2,SS:STACK1 START: MOV AX,DATA1MOV DS,AXMOV AX,DATA2MOV ES,AXMOV BX,0004H MOV CX,0005HMOV BP,0003HMOV SI,0002HMOV DI,0001HMOV AX,CXMOV AX,500HMOV AX,TABLE1MOV AX,ES:[BX] MOV AX,[BX+05H]MOV AX,SS:[BX]+03HMOV AX,TABLE1[BX]MOV AX,07H[BX] MOV AX,[BP]MOV AX,TABLE1[BP]• MOV AX,08H[BP]• MOV AX,[BP+06H]MOV AX,DS:[BP+03H]MOV AX,[BP]+ 05HMOV AX,ES:[SI+03H]MOV AX,[DI+06H]MOV AX,[DI]+05HMOV AX,TABLE1[SI]MOV AX,[SI]MOV AX,TABLE1[DI]MOV AX,[SI]+05HMOV AX,[BX][DI+01H]MOV AX,[BX][SI]+03HMOV AX,TABLE1[BX][SI]MOV AX,ES:[BX][DI]MOV AX,[BP][DI+02H]MOV AX,TABLE1[BP][DI]• MOV AX,ES:[BP][SI]• MOV AX,[BP][SI+05H]• MOV AX,03H[BP][DI]• MOV AX,[BP][SI]• MOV AX,[BP+02H][DI+03H]• MOV AX,TABLE1[BP+02H][DI+03H]• MOV AH,4CH• INT 21H•CODE ENDS• END START表1 实验记录表指令源操作数 寻址方式源操作数 的地址AX 推算值AX 实际 值 MOV AX,CXMOV AX,500HMOV AX,TABLE1MOV AX,ES:[BX]MOV AX,[BX+05H]MOV AX,SS:[BX]+03HMOV AX,TABLE1[BX]MOV AX,07H[BX]MOV AX,[BP]续表1MOV AX,TABLE1[BP] MOV AX,08H[BP] MOV AX,[BP+06H] MOV AX,DS:[BP+03H] MOV AX,[BP]+05H MOV AX,ES:[SI+03H] MOV AX,[DI+06H] MOV AX,[DI]+05H MOV AX,TABLE1[SI] MOV AX,[SI] MOV AX,TABLE1[DI] MOV AX,[SI]+05HMOV AX,[BX][DI+01H] MOV AX,[BX][SI]+03H MOV AX,TABLE1[BX][SI] MOV AX,ES:[BX][DI] MOV AX,[BP][DI+02H] MOV AX,TABLE1[BP][DI] MOV AX,ES:[BP][SI] MOV AX,[BP][SI+05H] MOV AX,03H[BP][DI] MOV AX,[BP][SI] MOV AX,[BP+02H][DI+03H] MOVAX,TABLE1[BP+02H] [DI+03H]续表1四、思考题1、填写表1的内容。
2、8086/8088寻址方式有哪几种?偏移 地址寄存器和段址寄存器组合使用的规 律是什么?实验三 学生成绩统计程序•实验目的•实验环境•实验内容•实验练习•思考题一、实验目的•掌握多重分支程序和循环程序的基本 设计方法•进一步掌握汇编语言程序调试的方法 二、实验环境• 32位PC、MASM6.11软件三、实验内容 设有10个学生成绩分别为80, 100, 78, 56, 79, 90, 96, 82, 88, 75 编制程序分别统计低于60分,60~69分 ,70~79分,80~89分,90~99分及100分 的人的个数,并存放到 a100,b90,c80,d70,e60,f50单元中四、实验练习统计字符串‘BeiJing2008—Olympic Games!’中的大写字符、小写字符和数字 的个数,并放入LLETTER、SLETTER和DIGIT中 提示: (1)各字。





