位微机原理实验(西工大)

上传人:宝路 文档编号:5674307 上传时间:2017-08-07 格式:PPT 页数:70 大小:598.77KB
返回 下载 相关 举报
位微机原理实验(西工大)_第1页
第1页 / 共70页
位微机原理实验(西工大)_第2页
第2页 / 共70页
位微机原理实验(西工大)_第3页
第3页 / 共70页
位微机原理实验(西工大)_第4页
第4页 / 共70页
位微机原理实验(西工大)_第5页
第5页 / 共70页
点击查看更多>>
资源描述

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

1、微机原理实验课,内蒙古民族大学物理与电子信息学院实验教学中心,MASM 使用简要说明,程序设计者完成在纸上的程序编写工作还无法确定程序是否正确,因此下一步就是要对程序进行测试和调试,使它能正确运行。为了方便和有效的进行调试常常借助一些软件开发工具。 使用这些软件开发工具,对一个汇编语言程序的开发全过程如下图所示:,程序正确?,进入方法,开始/程序/附件/c:命令提示符C:e:E:cd masm5E:masm5edit文件存储时一定要用.asm为扩展名E:masm5masmE:masm5link连接结束以后即可使用debug命令,DEBUG的使用方法,进入与退出:出现提示符”-”直接输入DEBU

2、G进入,退出则输入Q显示命令:显示内存单元内容-D命令显示寄存器内容-R命令显示源程序指令(反汇编)-U命令程序运行:连续运行方式-G命令跟踪运行方式-T命令,软件实验部分,本部分共进行6次实验,实验内容如下:,实验一 BCD码的运算,一实验目的 1.熟悉在MASM集成环境下建立、汇编、链接、调试和运行汇编语言程序的全过程。 2.掌握汇编语言程序结构中数据段、堆栈段、代码段定义及内存分配方法。 3.学会DEBUG调试程序主要命令的使用方法。 4.掌握用组合BCD码表示数据的方法,并熟悉其加、减、乘、除运算。二实验内容 1.多位十进制数加法。 2.两位十进制数乘法。三实验要求 1.多位十进制数加

3、法:在内存中以DATA1和DATA2为首址,各分配5个字节单元,分别存入两个8位组合BCD码数据(低位在前),将两数相加,结果送回到DATA2处。 2.两位十进制数乘法:将被乘数和乘数以组合BCD码形式分别存放于DATA1和DATA2定义的节单元中,经乘法运算,乘积存入DATA3定义的两个内存单元中。 3.用DEBUG调试程序、查看运算结果,进行手工验证;并且用DEBUG修改数据,重新执行。,BCD码用4位二进制编码表示一个十进制数,又称二十进制数,由于这四位二进制数的权值为8421,故也称BCD码为8421码。在计算机里,用一个字节的低四位表示一位十进制数非组合BCD码;用一个字节表示两位十

4、进制数组合BCD。 非组合BCD码 uuuu 1001 例:计算机里79d 非组合BCD码:uuuu0111 uuuu1001组合BCD码 0111 1001 例:计算机里79d组合BCD码:01111001在计算机里,所有的运算都是按二进制进行的,运算结果是二进制数(即十六进制数)为了把十六进制运算结果转换成十进制,汇编语言中引进了组合BCD码加法调整指令DAA和减法调整指令DAS。 DAA 加法十进制调整指令ALAL中的十六进制数转为BCD形式 该指令之前要执行ADD或ADC。调整方法:若,或中的低四位是十六进制的F,则AL内容加06h,AF置1;若CF为1,或AL中的高四位是十六进制的A

5、F,则AL内容加60h,CF置1,多位十进制数加法,.model small .data data1 db 11h,22h,33h,44h,00h data2 db 99h,88h,77h,66h,00h .code startup mov si,offset data1 ;设指针 mov di,offset data2 clc ;清进位 mov cx,5 ;设加法次数lop: mov al,si ;取第一加数 adc al,di ;取第二加数 daa ;十进制调整 mov di,al ;结果存入指定单元 inc si ;指针加1 inc diloop lop ;循环 .exit,流程图:,开

6、始,清进位,设加法次数,十进制调整; 部分和回送,指向下单元数,AL AL+第二加数,CX-1=0?,结束,Y,N,两位十进制数乘法,.model small.datadata1 db 34hdata2 db 56hdata3 dw 1 dup (?).code.startup mov bl,data1 ;第一乘数转换成16进制数 mov bh,bl and bh,0fh and bl,0f0h mov cL,4 shr bl,cL mov al,10 mul bl add al,bh movzx cx, al ;置加法次数计数器,mov bl,data2 ; 第二乘数做BCD 加法,加第一乘

7、数次 mov ax,0 clclop: add al,bl daa xchg ah,al adc al,0 daa xchg ah,al loop lop mov data3,ax;积送乘积存储单元 nop nop nop .exit end,两位十进制数乘法流程图:,开始,分离出第一乘数的“个位”,分离出第一乘数的“十位”,第一乘数的“十位”移到“个位”后,再乘 10,合成得到16进制的第一乘数,BCD码转换成16进制数,1,1,清进位,第二乘数做加法次数,十进制调整,AL与AH内容交换,AL与AH内容交换,十进制调整,CX-1=0?,N,Y,存储结果,结束,一、实验目的 掌握循环结构程序的

8、设计、调试。二、实验内容1 多字节无符号数加法。2 设计一软件延时器,并在屏幕上显示软件延时倒计时过程。三、实验要求1多字节无符号加法:在DATAS中存放10个双字节无符号数, 用循环结构设计程序,通过程序运算,把这10个双字节无符号 数相加,其和存入紧邻加数之后的四个单元中。2软件延时器:做一延时约1秒的软件延时器,在屏幕上按9、 8、0顺序显示软件延时倒计时过程。,实验二 循环结构程序,有关问题的说明,循环程序的三个组成部分: 循环初始状态设置。设置循环次数、为循环体正常工作建立初始状态等。 循环体。循环工作的主体,包含循环的工作部分和修改部分。循环的工作部分是为完成程序功能而设计的程序段

9、;循环的修改部分是为保证每一次重复时,参加执行的信息能发生有规律的变化而建立的程序段。 循环控制部分。选择一个循环控制条件来控制循环的运行和结束。循环程序的结构:,循环初始状态,循环控制条件,循环体,Y,N,循环初始状态,循环体,循环控制条件,Y,N,DO-WHILE结构,DO-UNTIL结构,子程序结构: procedure name PROC Attribute RET procedure name ENDP Attribute,NEAR 调用程序和过程在同一个代码段中,FAR 调用程序和过程不在同一个代码段中,系统功能调用:系统功能调用是DOS为方便汇编语言编写而提供的一组约80个功能调

10、用的常用子程序,它分为设备管理、文件管理和目录管理等几类。DOS规定用软中断指令 INT 21H 进入各功能调用子程序的总入口,再为每个功能调用规定一个功能号,以便进入相应各自子程序的入口。系统功能调用的使用方法:,EX1:从键盘输入单字符 MOV AH,01H ;1号功能调用 INT 21H将键盘输入字符的ASCII码送到 AL。EX2:从键盘输入字符串 BUF DB 10 DUP(?) LEA DX,BUF MOV AH,0AH ;0A号功能调用 INT 21H将键盘输入的字符串写到 RAM 中去,击回车键表示字符串结束。字符数与予留空间的关系为:少补零多丢失。EX3:输出单字符 MOV

11、DL,M MOV AH,02H; 2号功能调用 INT 21H将 DL 中字符从屏幕上显示出来。,EX4:输出字符串 BUF DB Thank you MOV DX,OFFSET BUF MOV AH,09H;9号功能调用 INT 21H将 指定 RAM 缓冲区中的字符串从屏幕上显示出来。 为字符串结束符。EX5:直接控制台输入/输出单字符 MOV DL,0FFH;DL=0FFH时, MOV AH,06H; 6号功能调用 INT 21H; 将键盘输入字符 送到 AL 中。 MOV DL,M; DL 0FFH时, MOV AH,06H; 6号功能调用 INT 21H; 将 DL 中字符送到 屏幕

12、上显示。,多字节无符号数加法,.MODEL SMALL .586 .DATADATAS DW 1111H,2222H,3333H,4444H,5555H DW 6666H,7777H,8888H,9999H,0AAAAHRESULT DD 1 DUP(?) .CODE.STARTUP MOV SI,OFFSET DATAS;设指针 MOV CX,10;累加次数 MOV EAX,0;清累加器 CLC;清进位LOP: MOV BX,SI;取加数到BX MOVZX EBX,BX ;将BX扩展成32位 ADC EAX,EBX;带进位加 INC SI;改指针 INC SI LOOP LOP;循环加 MO

13、V RESULT,EAX;存结果 .EXIT END,开始,清进位,将BX扩展为32位,SI 指向下一加数,CX-1=0?,N,Y,存结果,结束,软件延时器,.model small.data data db 20h,20h,20h,20h,20h,39h,0dh,$.code.startupmov cx,09h; 设循环次数lop:mov ah,09h;显示功能调用lea dx,dataint 21hcall near ptr delay;调用延时子程序dec data+5;修改显示数字loop lop.exitDelay proc near uses cx ;延时子程序 mov bx,06ffh ;设第二时常数Delay1 :mov cx,0h loop $ ;自身循环CX次 dec bx ;第二时常数减1 jnz delay1 ;不为零循环 retDelay endpend,

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

当前位置:首页 > 高等教育 > 大学课件

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