微机原理实验报告(4)

2019-05-24 15:58

实验四 运算类程序实验

一、实验目的

1. 掌握运算类指令编程及调试方法;

2. 掌握运算类指令对各状态标志位的影响及测试方法。

二、实验所用设备

1. PC微机一台。

三、实验内容

80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对表4-1所示

的数据类型进行算术运算。

表4-1 数据类型算术运算表

1.二进制双精度加法运算

本实验要求计算X+Y=Z,将结果Z输出到屏幕,其中X=001565A0H,Y=0021B79EH。

实验利用累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。在80386以上微机中可以直接使用32位寄存器和32位加法指令完成本实验的功能。

2.十进制数的BCD码减法运算

本实验要求计算X-Y=Z,其中,X、Y、Z为BCD码,其中X=0400H,Y=0102H。 3.乘法运算

本实验要求实现十进制数的乘法,被乘数和乘数均以BCD码形式存放于内存中,被乘数为54320H,乘数为3H,运算结束后,将乘积在屏幕上显示。 4.用减奇数开平方运算

80x86指令系统中有乘除法指令但没有开平方指令,因此,开平方运算是通过程序来实现的。用减奇数法可求得近似平方根,获得平方根的整数部分。我们知道,N个自然数中的奇数之和等于N2,即:1+3+5=9=32

1+3+5+7=16=42

1+3+5+7+9+11+13+15=64=82

第 16 页

若要做S的开方运算,那麽就可以从S中逐次减去自然数中的奇数1,3,5,7?,一直进行到相减数为0或不够减下一个自然数的奇数为止,然后统计减去自然数的奇数个数,它就是S的近似平方根。

本实验要求利用减奇法计算0040H的开平方值,并将运算结果显示在屏幕上。

四、实验步骤

1. 2. 3. 4.

运行Tddebug软件,选择Edit菜单编写实验程序;

使用Compile菜单中的Compile和Link对实验程序进行汇编、连接; 使用Rmrun菜单中的Run,运行程序,观察运行结果;

使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;

5. 更改数据区中的数据,考察程序的正确性。

五、实验报告内容及要求

根据实验要求编写程序并调试,写出程序调试过程及运行情况。 1. 二进制双精度加法运算

DATA SEGMENT

X DW 65A0H,0015H Y DW 0B79EH,0021H Z DW 2 DUP(?) DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,2 CLC

MOV SI,0

L1: MOV AX,X[SI] ADC AX,Y[SI] MOV Z[SI],AX INC SI INC SI LOOP L1

MOV BX,Z[2] CALL LIST_BX MOV BX,Z CALL LIST_BX MOV AH,4CH INT 21H LIST_BX PROC

MOV CH,4 MOV CL,4 NEXT: ROL BX,CL MOV DL,BL AND DL,0FH ADD DL,30H CMP DL,39H

第 17 页

JLE PRINT ADD DL,7 PRINT: MOV AH,2 INT 21H DEC CH JNZ NEXT RET LIST_BX ENDP

CODE ENDS END START

程序结果:00371D3E

2. 十进制数的BCD码减法运算 DATA SEGMENT X DW 0400H Y DW 0102H DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,X LEA DI,Y MOV DL,10D MOV BL,[SI] MOV AL,[SI+1] MUL DL ADD BL,AL MOV DL,10D MOV CL,[DI] MOV AL,[DI+1] MUL DL ADD CL,AL SUB BL,CL MOV AL,BL MOV BL,10D DIV BL MOV BH,AL

第 18 页

MOV BL,AH MOV CX,4 MOV AH,02H LOOP2: ROL BX,4 MOV DL,BL AND DL,0FH ADD DL,'0' CMP DL,'9' JB PRINT ADD DL,'A'-('9'+1) PRINT: INT 21H LOOP LOOP2 CODE ENDS

END START

程序结果:0208

3. 乘法运算

DATA SEGMENT

X DD 54320H Y DB 03H DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,X+2 MOV CX,3 MOV AX,0 LOOP1: MOV DL,10D MOV BL,[SI] ROL BL,4 AND BL,0FH MUL DX ADD AX,BX MOV DL,10D MOV BL,[SI] AND BL,0FH MUL DX ADD AX,BX DEC SI

LOOP LOOP1 LEA DI,Y MOV BL,[DI]

第 19 页

MUL BX MOV SI,4 MOV BX,AX MOV CX,DX MOV AH,02H LOOP2: ROL CX,4 MOV DL,CL AND DL,0FH ADD DL,'0' CMP DL,'9' JBE PRINT1

ADD DL,'A'-('9'+1) PRINT1: INT 21H DEC SI JNZ LOOP2 MOV SI,4 LOOP3: ROL BX,4 MOV DL,BL AND DL,0FH ADD DL,'0' CMP DL,'9' JBE PRINT2

ADD DL,'A'-('9'+1) PRINT2: INT 21H DEC SI JNZ LOOP3 MOV DL,'H' INT 21H CODE ENDS

END START

程序结果:00027C90H

4.用减奇数开平方运算 DATA SEGMENT

RES DB 5 DUP('0') DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV BX,0040H MOV CX,1D MOV AX,0D BEGIN: SUB BX,CX JB EXIT

第 20 页


微机原理实验报告(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:容规〉解析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: