西工大微机原理实验课

上传人:xzh****18 文档编号:50597945 上传时间:2018-08-09 格式:PPT 页数:68 大小:542.50KB
返回 下载 相关 举报
西工大微机原理实验课_第1页
第1页 / 共68页
西工大微机原理实验课_第2页
第2页 / 共68页
西工大微机原理实验课_第3页
第3页 / 共68页
西工大微机原理实验课_第4页
第4页 / 共68页
西工大微机原理实验课_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《西工大微机原理实验课》由会员分享,可在线阅读,更多相关《西工大微机原理实验课(68页珍藏版)》请在金锄头文库上搜索。

1、微机原理实验课西北工业大学计算机学院实验教学中心MASM 611使用简要说明 Microsoft宏汇编程序MASM611有建立汇编语言所需的全部工 具, 我们简要介绍其集成开发软件PWB。PWB是集汇编程序的编辑、 编 译、连接、调试、运行于一体的综合软件。 运行 PWB在计算机 C:盘上具体使用方法结合实例介绍 MASM611 文件夹BINR 文件夹运行程序 PWB软件实验部分 本部分共进行4次实验,实验内容如下:1实验一 BCD码的运算 2实验三 循环结构程序 3实验四 排序程序 4实验五 分支程序 实验一 BCD码的运算 一实验目的1.熟悉在MASM611集成环境下建立、汇编、链接、调试

2、和运行汇编语言程序 的全过程。2.掌握汇编语言程序结构中数据段、堆栈段、代码段定义及内存分配方法。3.学会DEBUG调试程序主要命令的使用方法。4.掌握用组合BCD码表示数据的方法,并熟悉其加、减、乘、除运算。 二实验内容1.多位十进制数加法。2.两位十进制数乘法。 三实验要求1.多位十进制数加法:在内存中以DATA1和DATA2为首址,各分配5个字节 单元,分别存入两个8位组合BCD码数据(低位在前),将两数相加,结果 送回到DATA2处。2.两位十进制数乘法:将被乘数和乘数以组合BCD码形式分别存放于DATA1 和DATA2定义的节单元中,经乘法运算,乘积存入DATA3定义的两个内存 单元

3、中。3.用DEBUG调试程序、查看运算结果,进行手工验证;并且用DEBUG修改 数据,重新执行。关于BCD码、十六进制数的说明BCD码用4位二进制编码表示一个十进制数,又称二十进制数。由于这4位二进 制数 的权值为8421,故也称BCD码为8421码。在计算机里,用一个字节的低4位表示一 位 十进制数非组合BCD码;用一个字节表示两位十进制数组合BCD码。非组合BCD码uuuu 1001例:计算机里 79d 非组合BCD码:uuuu0111 uuuu1001组合BCD码0111 1001例:计算机里 79d 组合BCD码:0111100116进制数0123456789ABCDEF 二进制码00

4、00000100100011010001010110011110001001101010111100110111101111BCD 码000000010010001101000101011001111000100110进制数0123456789在计算机里,所有的运算都是按二进制进行的,运算结果是二进制数(即十六进制 数) 。为了把十六进制运算结果转换成十进制,汇编语言中引进了组合BCD码加 法调整指令DAA和减法调整指令DAS。DAA 加法的十进制调整指令该指令之前要执行ADD或ADC。调整方法:若AF为1,或AL中的低4位是十六进制的A F,则AL内容加06H,AF置1; 若CF为1,或AL

5、中的高4位是十六进制的A F,则AL内容加60H,CF置1。AF 辅助进位标志 CF进位标志AL AL中的十六进制数调整为BCD格式多位十进制数加法.model small .datadata1 db 11h,22h,33h,44h,00hdata2 db 99h,88h,77h,66h,00h.code.startupmov si,offset data1 ;设指针mov di,offset data2clc ;清进位mov cx,5 ;设加法次数 lop: mov al,si ;取第一加数adc al,di ;取第二加数daa ;十 进制调整mov di,al ;结果存入指定单 元inc

6、si ;指 针加1inc di loop lop ;循环.exit end 流程图:开始SI Data1首址 DI Data2首址清进位设加法次数十进制调整; 部分和回送指向下单元数AL 第一加数AL AL+第二加数+CFCX-1=0?结束YN两位十进制数乘法.model small .586 .data data1 db 34h data2 db 56h data3 dw 1 dup (?) .code .startupmov bl,data1 ;第一乘数转换成16进 制数mov bh,bland bh,0fhand bl,0f0hmov cL,4shr bl,cLmov al,10mul

7、bladd al,bhmovzx cx, al ;置加法次数计数器mov bl,data2 ; 第二乘数做 BCD 加法,加第一乘数次mov ax,0 clc lop: add al,bldaaxchg ah,aladc al,0daaxchg ah,alloop lopmov data3,ax ;积送乘积存储单元nopnopnop.exitend两位十进制数乘法流程图:开始BL 第一乘数 BH 第一乘数分离出第一乘数的“个位”分离出第一乘数的“十位”第一乘数的“十位”移到 “个位”后,再乘 10合成得到16进制 的第一乘数CX 16进制的第一乘数BCD码转换成16进制数11AX 0清进位BL

8、 第二乘数第二乘 数做加 法次数十进制调整AL与AH内容交换AL AL+0+CFAL AL+BLAL与AH内容交换十进制调 整CX-1=0?NY存储结果结束一、实验目的掌握循环结构程序的设计、调试。二、实验内容l1 多字节无符号数加法。l2 设计一软件延时器,并在屏幕上显示软件延时倒计时过程 。 三、实验要求l1多字节无符号加法:在DATAS中存放10个双字节无符号数 , l 用循环结构设计程序,通过程序运算,把这10个双字节无符 号 l 数相加,其和存入紧邻加数之后的四个单元中。l2软件延时器:做一延时约1秒的软件延时器,在屏幕上按9 、l 8、0顺序显示软件延时倒计时过程。实验三实验三 循

9、环结构程序循环结构程序有关问题的说明循环程序的三个组成部分: 循环初始状态设置。设置循环次数、为循环体正常工作建立初始状态等。 循环体。循环工作的主体,包含循环的工作部分和修改部分。循环的工作 部分是为完成程序功能而设计的程序段;循环的修改部分是为保证每一次 重复时,参加执行的信息能发生有规律的变化而建立的程序段。 循环控制部分。选择一个循环控制条件来控制循环的运行和结束。循环程序的结构:循环初始状态循环控制条件循环体YN循环初始状态循环体循环控制条件YNDO-WHILE结构DO-UNTIL结构子程序结构:procedure name PROC AttributeRETprocedure na

10、me ENDP Attribute NEAR 调用程序和过程在同一个代码段中FAR 调用程序和过程不在同一个代码段中系统功能调用:系统功能调用是DOS为方便汇编语言编写而提供的一 组约80个功能调用的常用子程序,它分为设备管理、文件管理和目录 管理等几类。DOS规定用软中断指令 INT 21H 进入各功能调用子程 序的总入口,再为每个功能调用规定一个功能号,以便进入相应各自 子程序的入口。系统功能调用的使用方法:指定的寄存器入口参数AH调用功能的功能号INT 21HEX1:从键盘输入单字符MOV AH,01H ;1号功能调 用INT 21H 将键盘输入字符的ASCII码送到 AL。 EX2:从

11、键盘输入字符串BUF DB 10 DUP(?)LEA DX,BUFMOV AH,0AH ;0A号功能调 用INT 21H 将键盘输入的字符串写到 RAM 中去 ,击 回车键表示字符串结束。字符数与予 留 空间的关系为:少补零多丢失。 EX3:输出单字符MOV DL,MMOV AH,02H; 2号功能调用INT 21H 将 DL 中字符从屏幕上显示出来。EX4:输出字符串BUF DB Thank you MOV DX,OFFSET BUFMOV AH,09H;9号功能调用INT 21H 将 指定 RAM 缓冲区中的字符串从屏 幕 上显示出来。 为字符串结束符。 EX5:直接控制台输入/输出单字符

12、MOV DL,0FFH;DL=0FFH时,MOV AH,06H; 6号功能调用INT 21H; 将键盘输入字 符 送到 AL 中。 MOV DL,M; DL 0FFH时,MOV AH,06H; 6号功能调用INT 21H; 将 DL 中字符送 到 屏幕上显示。多字节无符号数加法.MODEL SMALL.586.DATA DATAS DW 1111H,2222H,3333H,4444H,5555H DW 6666H,7777H,8888H,9999H,0AAAAH RESULT DD 1 DUP(?) .CODE .STARTUPMOV SI,OFFSET DATAS ;设指针MOV CX,10

13、;累加次数MOV EAX,0;清累加器 LOP: MOV BX,SI;取 加数到BXMOVZX EBX,BX ;将BX扩 展成32位ADD EAX,EBX; 加INC SI;改指针INC SILOOP LOP;循环加MOV RESULT,EAX;存结果.EXITEND开始SI DATAS的首址CX 累加次数EAX 0清进位BX SI所指加数将BX扩展为32位EAX EAX+EBX+CFSI 指向下一加数CX-1=0?NY 存结果结束软件延时器.model small .datadata db 20h,20h,20h,20h,20h,39h,0dh,$ .code .startup mov cx

14、,0Ah; 设循环次数 lop:mov ah,09h;显示功能调用 lea dx,data int 21h call near ptr delay;调用延时 子程序 dec data+5;修改显示数字 loop lop .exitDelay proc near uses cx ;延时子程序mov bx,06ffh ;设第二 时常数 Delay1 :mov cx,0hloop $ ;自身循环CX次dec bx ;第二时常数减1jnz delay1 ;不为零循环ret Delay endp end开始CX 循环次数字符串 显示功能调用延时子程序调用显示数字修改CX-1=0?NY结束主程序流程 :延时子程序流程 : 延时子程序定义BX 第二时常数CX 第一时常数CX-1=0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 计算机原理

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号