微机原理实验程序
- 格式:doc
- 大小:402.00 KB
- 文档页数:12
第四章软件实验部分
实验一两个多位十进制数相减实验
一、实验要求:将两个多位十进制数相减,要求被减数,减数均以ASCII码形式按顺序存放在以DATAI
和DATA2为首的5个内存单元中(低位在前),结果送回DATAI处。
二、实验目的:1.学习数据传送和算术运算指令的用法。
2.熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。
三、实验步骤:连好实验箱后接通电源,打开上位机软件88TE进入软件调试界面:点击“文件\打开”文
件路径为C:\88TE\cai\asm\Ruanjian\Rjexp1.asm。具体操作如图所示:
点击编译连接生成可执行的exe文件。
通过单步运行调试程序,打开寄存器查看其变量变化情况。
四、实验程序框图:
五、实验程序:
文件路径为C:\88TE\cai\asm\Ruanjian\Rjexp1.asm
DA TA SEGMENT
DA TA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)
DA TA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)
MES1 DB '-','$' Array MES2 DB '=','$'
DA TA ENDS
STACK SEGMENT ;
STA DB 20 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DA TA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK
MOV SS,AX
MOV AX,TOP
MOV SP,AX
MOV SI,OFFSET DA TA1
MOV BX,05
CALL DISPL ;
MOV AH,09H
LEA DX,MES1
INT 21H
MOV SI,OFFSET DATA2
MOV BX,05 ;显示减数
CALL DISPL
MOV AH,09H
LEA DX,MES2
INT 21H
MOV SI,OFFSET DA TA1
MOV DI,OFFSET DATA2
CALL SUBA ;减法运算
MOV SI,OFFSET DATA1
MOV BX,05 ;显示结果
CALL DISPL
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
INT 21H
MOV AX,4C00H
INT 21H
DISPL PROC NEAR ;显示子功能
DSI: MOV AH,02
MOV DL,[SI+BX-1] ;显示字符串中一字符
INT 21H
DEC BX ;修改偏移量
JNZ DSI
RET
DISPL ENDP
SUBA PROC NEAR
MOV DX,SI
MOV BP,DI
MOV BX,05
SU1: SUB BYTE PTR[SI+BX-1],30H
SUB BYTE PTR[DI+BX-1],30H
DEC BX ;将ASCII 码表示的数字串
JNZ SU1 ;转化为十六进制的数字串
MOV SI,DX
MOV DI,BP
MOV CX,05 ;包括进位,共5位
CLC ;清进单位
SU2: MOV AL,[SI]
MOV BL,[DI]
SBB AL,BL ;带进位相减
AAS ;非组合BCD码的减法调整
MOV [SI],AL ;结果送被减数区
INC SI
INC DI ;指向下一位
LOOP SU2 ;循环
MOV SI,DX
MOV DI,BP
MOV BX,05
SU3: ADD BYTE PTR [SI+BX-1],30H
ADD BYTE PTR [DI+BX-1],30H
DEC BX ;十六进制的数字串转化ASCII码表示的数字串
JNZ SU3
RET
SUBA ENDP
CODE ENDS
END START
实验二两个数相乘的实验
一、实验要求:
实现十进制数的乘法,被乘数和乘数均以ASCII码形式存放在内存中,算式结果在屏幕上显示出来。
二、实验目的:掌握乘法指令和循环指令的用法。
三、实验程序框图:
四、实验程序:
DA TA SEGMENT
DA TA1 DB 32H,39H,30H,35H,34H
DA TA2 DB 34H
MES1 DB '*','$'
MES2 DB '=','$'
RESULT DB 6 DUP (00H)
DA TA ENDS
STACK SEGMENT
STA DB 20 DUP (?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DA TA
START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,TOP
LEA SI,DATA1
MOV BX,05H
L1: MOV AH,02H
MOV DL,[SI+BX-1]
INT 21H
DEC BX
JNZ L1
MOV AH,09H
LEA DX,MES1
INT 21H
LEA SI,DATA2
MOV AH,02H
MOV DL,[SI]
INT 21H
MOV AH,09H
LEA DX,MES2
INT 21H
MOV SI,OFFSET DATA2 ;显示算式
MOV BL,[SI] ;乘数DA TA2→BL
AND BL,00001111B ;屏蔽高4位,ASCII码转化为十六进制数