实验二:简单汇编语言程序设计与调试_第1页
实验二:简单汇编语言程序设计与调试_第2页
实验二:简单汇编语言程序设计与调试_第3页
实验二:简单汇编语言程序设计与调试_第4页
实验二:简单汇编语言程序设计与调试_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、深 圳 大 学 实 验 报 告课程名称 微型计算机技术 项目名称 实验二:简单汇编语言程序设计与调试 学 院 专 业 指导教师 报 告 人 学号 实验时间 2015-11-01 提交时间 2015-11-15 教务处制一、 实验目的与要求1.1 掌握使用运算类指令编程及调试方法。1.2 掌握运算类指令对各个状态标志位的影响及其测试方法。二、实验内容与方法8086/8088指令系统提供了实现加、减、乘、除运算的基本指令,可对表2-1所示的数据类型进行算术运算。表 2-1 数据类型算术运算表数制 二进制 BCD码带符号无符号 组合 非组合运算符+、×、÷ +、+、×、

2、÷操作数字节,字,多精度字节(二位数字)字节(一位数字)2.1 二进制双精度加法运算2.1.1 实验要求:计算X+Y=Z,将结果Z存入某存储单元。2.1.2 实验原理:本实验程序是双精度(2个16位,既32位)运算,利用累加器AX,先求低16位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。由于低位和可能向高位有进位,因而高位字相加语句需要用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。2.1.3 参考程序清单:STACK SEGMENT STACK DW 64 DUP(?)STACK ENDSDATA SEGMENTXL DW ? ;请在此

3、处给X低位赋值XH DW ? ;请在此处给X高位赋值YL DW ? ;请在此处给Y低位赋值YH DW ? ;请在此处给Y高位赋值ZL DW ?ZH DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AX,XL ;X的值送AXADD AX,YL ;X低位加Y低位MOV ZL,AX ;存低位和MOV AX,XH ;X高位送AXADC AX,YH ;X高位加Y高位MOV ZH,AX ;存高位和CODE ENDS END START2.2 十进制数的BCD码减法运算2.2.1 实验要求:计算

4、X-Y=Z,其中X,Y,Z为BCD码。000402012.2.2 参考实验程序及流程图如下: STACK SEGMENT STACK DW 64 DUP(?) STACK ENDSDATA SEGMENTXDW ? ;请在此处给X赋值YDW ? ;请在此处给Y赋值ZDW ?DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AXMOV AH,00HSAHF MOV CX,0002H MOV SI,OFFSET X MOV DI,OFFSET ZA1: MOV AL,SISBB AL,SI+02H DAS

5、PUSHF AND AL,0FH POPFMOV DI,AL INC DI INC SI LOOP A1A2: JMP A2CODE ENDSEND START2.3 乘法运算2.3.1实验要求:本实验实现十进制数的乘法,被乘数和乘数均以BCD码形式存放于内存中,乘积在屏幕显示。2.3.2 参考程序清单:STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSDATA SEGMENTDATA1 DB 5 DUP(?) ;乘数DATA2 DB ? ;被乘数RESULTDB 6 DUP(?) ;乘积DATA ENDSCODE SEGMENT ASSUME CS:CODE,

6、DS:DATASTART: MOV AX,DATAMOV DS,AXCALL INITMOV SI,OFFSET DATA2MOV BL,SIAND BL,0FHCMP BL,09HJNC ERRORMOV SI,OFFSET DATA1MOV DI,OFFSET RESULTMOV CX,0005HA1:MOV AL,SI+04HAND AL,0FHCMP AL,09HJNC ERRORDEC SIMUL BLAAMADD AL,DI+05HAAAMOV DI+05H,ALDEC DIMOV DI+05H,AHMOV CX,06HMOV SI,OFFSET RESULTDISPLAY:MOV

7、 AH,01HMOV AL,SIADD AL,30H;得到ASCII码INT 10H;显示器显示INC SILOOP DISPLAYA2: JMP A2INIT:MOV SI,OFFSET RESULT;RESULT区清零 MOV CX,0003HMOV AX,0000HA3:MOV SI,AX INC SIINC SILOOP A3RET ERROR: MOV AX,0145H;显示“E”INT 10HJMP A2CODE ENDSENDSTART2.4 设计性实验-开平方运算(选作)2.4.1 设计要求:设计一个用减奇数法的开平方运算程序2.4.2 设计提示:8086/8088指令系统中有

8、乘除法指令但没有开平方指令,因此,开平方运算是通过程序来实现的。用减奇数法可求得近似平方根,获得平方根的整数部分。我们知道,N个自然数中的奇数之和等于N²,即:1+3+5=9=3²1+3+5+7=16=4²1+3+5+7+9+11+13+15=64=8²若要做S的开方运算,那么就可以从S中逐次减去自然中的奇数1,3,5,7。,一直进行到相减数为0或不够减下一个自然数的奇数为止,然后统计减去自然数的奇数个数,它就是S的近似平方根。(设开平方数为正整数,存放在3500H单元)(5) D350A,显示结果为:350A 04 00 CC。(6) 反复试几组数,考

9、察程序的正确性。三、实验步骤与过程2.1 二进制双精度加法运算(1) 输入程序并检查无误,经汇编、链接后装入系统。(设:CS:0000H,IP:2000H)(2) 打开寄存器窗口,观察各寄存器内容的变化。(3) 用U0000:2000查看MOV AX,XXXX(DATA)语句,即得到数据段段地址CS:XXXX用E命令EXXXX:0000给XL,XH,YL,YH赋值存入二进制数AO 65 15 00和9E B7 21 00.(4) G=0000:2000,运行以上程序。(5) DXXXX:0008,显示计算结果:3E 1D 37 00 CC.(6) 重新赋值,用T(T=0000:2000)命令逐

10、步运行程序,观察寄存器内容的变化。(7) 反复试几组数,考察程序的正确性.查看段地址CS:用E命令赋值:运行并查看显示计算结果:单步运行过程: 2.2 十进制数的BCD码减法运算(1)输入实验程序并检查无误,经汇编、链连接后装入系统,并打开寄存器窗口。(设:CS:0000H,IP:2000H)(2)用U0000:2000查看MOV AX,XXXX(DATA)语句即得到数据段地址CS:XXXX。用E命令EXXXX:0000给X,Y赋值存入40和12的BCD码:00 04 02 01。(3) G=0000:2000,运行以上程序。(4) DXXXX:0004,显示计算结果(5) 重新赋值,用T命令单步运行程序,观察各寄寸器内容的变化。(6) 反复试几组数,考察程序的正确性。程序注释:查看段地址CS:用E命令赋值:用D命令查看显示结果:单步运行过程: 2.3 乘法运算(1) 输入程序并检查无误,经汇编、链接后装入系统。(2) 打开寄存器窗口,观察寄存器内容的变化。(3) 用U2000命令查看MOV AX,XXXX语句,即得数据段段地址CS:XXXX。(4) 用EXXXX:0000命令在对应数据段填入乘数与被乘数。(5) G=0000:2000,运行程序,屏

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论