实验一 两个多位十进制数相减实验

合集下载

进制转换_实验报告

进制转换_实验报告

一、实验目的1. 理解不同进制之间的转换原理。

2. 掌握二进制、八进制、十进制和十六进制之间的相互转换方法。

3. 培养实际操作能力和逻辑思维能力。

二、实验原理进制转换是计算机科学和数字电路中的基本概念。

常见的进制有二进制、八进制、十进制和十六进制。

它们之间的转换主要基于位权原理。

- 二进制:基数为2,只有0和1两个数字,每一位的值是2的幂次方。

- 八进制:基数为8,每一位的值是8的幂次方。

- 十进制:基数为10,每一位的值是10的幂次方。

- 十六进制:基数为16,每一位的值是16的幂次方,其中A-F表示10-15。

三、实验器材- 计算机- 文档编辑软件(如Microsoft Word)四、实验步骤1. 二进制转十进制- 将二进制数按照位权原理进行计算。

- 例如,二进制数1101转换为十进制:\(1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 = 8 + 4 + 0 + 1 = 13\)。

2. 十进制转二进制- 使用除以2的方法,将十进制数不断除以2,记录余数。

- 将余数从下到上排列,得到二进制数。

- 例如,十进制数13转换为二进制:\(13 \div 2 = 6\) 余 1,\(6 \div 2 = 3\) 余 0,\(3 \div 2 = 1\) 余 1,\(1 \div 2 = 0\) 余 1,所以13的二进制为1101。

3. 八进制转十进制- 将八进制数按照位权原理进行计算。

- 例如,八进制数123转换为十进制:\(1 \times 8^2 + 2 \times 8^1 + 3 \times 8^0 = 64 + 16 + 3 = 83\)。

4. 十进制转八进制- 使用除以8的方法,将十进制数不断除以8,记录余数。

- 将余数从下到上排列,得到八进制数。

- 例如,十进制数83转换为八进制:\(83 \div 8 = 10\) 余 3,\(10 \div 8 = 1\) 余 2,\(1 \div 8 = 0\) 余 1,所以83的八进制为123。

十进制的加减教案

十进制的加减教案

十进制的加减教案教案:十进制的加减教学目标:1. 了解十进制数的加法和减法运算规则;2. 能够应用加法和减法运算规则进行十进制数的计算;3. 培养学生的数学思维,提高计算能力。

教学准备:1. 教师准备白板、黑板笔和教学课件;2. 学生准备笔、纸和计算器。

教学流程:引入:教师可以通过一个简单的问题引起学生的思考:“如果小明手里有3个苹果,小红手里有2个苹果,他们两个一共有多少个苹果?”带领学生回答这个问题,并引导他们通过数学符号进行计算。

教学内容1:十进制数的加法步骤1:教师通过白板或教学课件展示一个简单的加法算式,如321 + 123。

步骤2:解释加法运算的规则,即从右向左逐位相加,按照个位、十位、百位等顺序进行计算。

当某一位的和大于等于10时,需要进位到高一位。

步骤3:教师以一个示例进行讲解,详细解释每一步的计算过程。

可通过拆分数位、对齐数字等方式使学生更好地理解。

步骤4:教师设计一些简单的加法练习题,让学生进行计算,并进行讲解。

教学内容2:十进制数的减法步骤1:教师通过白板或教学课件展示一个简单的减法算式,如754 - 356。

步骤2:解释减法运算的规则,即从右向左逐位相减,按照个位、十位、百位等顺序进行计算。

当被减数的某一位小于减数的相应位时,需要向高位借位。

步骤3:教师以一个示例进行讲解,详细解释每一步的计算过程。

可通过拆分数位、对齐数字等方式使学生更好地理解。

步骤4:教师设计一些简单的减法练习题,让学生进行计算,并进行讲解。

巩固练习:教师为学生设计一些综合性的加减法计算题,让学生进行练习。

学生可以用纸和笔进行计算,并使用计算器进行核对答案。

教师可以随机抽几个学生上台展示自己的计算过程。

拓展练习:教师可以为学生出一些较难的十进制加减法题目,让学生挑战更高难度的计算。

鼓励学生自己思考解决方法,并进行交流讨论。

总结:教师对本节课所学的加法和减法运算规则进行总结。

请学生回答以下问题:1. 十进制数的加法运算规则是什么?2. 十进制数的减法运算规则是什么?3. 你理解了加法和减法运算规则后,觉得数学计算更容易了吗?作业布置:教师布置相应的课后作业,内容为一些加减法题目。

两个十进制按位与的计算结果

两个十进制按位与的计算结果

两个十进制按位与的计算结果
"十进制按位与的计算结果,探索数字之间的奇妙交织"
在数字世界中,我们经常需要对数字进行各种运算,其中按位与运算是一种常见的操作。

当我们将两个十进制数字进行按位与运算时,我们会发现其中蕴藏着许多奇妙的数学现象和逻辑推理。

假设我们有两个十进制数字,27和18。

它们的二进制表示分别为11011和10010。

当我们对它们进行按位与运算时,我们会得到结果10,即2的十进制表示。

这个结果背后的数学原理值得我们深入探索。

首先,按位与运算是一种逻辑运算,它要求两个数字的对应位同时为1时,结果位才为1。

这意味着按位与运算能够帮助我们发现数字之间的共同特征和交集。

在我们的例子中,27和18的二进制表示中,只有第二位上同时为1,因此按位与的结果为2。

其次,按位与运算还有许多实际应用。

在计算机领域,按位与运算常常用于掩码操作和位操作,帮助我们对数据进行精确的处理和筛选。

通过深入理解按位与运算的原理和特性,我们能够更好地
应用它们于实际问题中,提高计算效率和数据处理精度。

最后,按位与运算的结果也反映了数字之间的奇妙交织。

在我们的例子中,27和18这两个数字看似毫无关联,但通过按位与运算,我们发现了它们之间的共同之处,这种数学上的交织和联系让我们对数字世界有了更深刻的理解。

因此,十进制按位与的计算结果不仅仅是一种数学运算,更是数字世界中的奇妙探索。

通过深入研究和理解按位与运算的原理和应用,我们能够更好地理解数字之间的关系,提高计算效率,拓展数学思维,从而更好地应对现实生活和工作中的挑战。

实验一 两个多字节数的加减运算

实验一 两个多字节数的加减运算

实验一多字节数求和运算,字节拆分运算一.实验目的1.熟悉emu8086调试程序的使用。

2.编写两个4字节数的加法、减法运算程序,并运用emu8086进行调试。

3. 编写字节拆分运算程序,并运用emu8086进行调试二.实验目的1.学习数据传送和算术运算指令2.熟悉在PC机上调试程序的方法三.emu8086调试程序的使用1.启动emu8086a.在WINDOWS下双击emu8086图标,启动界面如图1所示,用户可以选择新建文本、程序实例、启动指南、近期文档。

2.新建文件单击图1中的“New”选项,软件会弹出如图2所示的选择界面。

选择empty workspace的选项,打开一个完全空的文档。

3. 编辑程序如图3所示为编辑程序界面。

该编辑界面集文档编辑、指令编译、程序加载、系统工具、在线帮助为一体。

编写完程序后,用户只需单击工具栏上的“emulate”按钮即可仿真运行程序。

4.仿真运行当用户将程序加载到仿真器后,会同时打开仿真器界面和源程序界面,用户在仿真器界面中也可以同时看到源代码和编译后的机器码。

点击的任意一条源程序指令,则对应的机器代码显示为被选显示状态,与此同时,上面的代码指针也会相应变化。

用户也可以通过这种操作了解,数据段和堆栈段中各变量或数据在存储器中的情况。

用户可以利用工具栏中的“single step”按钮进行单步跟踪调试,以便仔细观察各寄存器、存储器、变量、标记位等情况,这对于程序初始调试时十分有用;当程序调试完毕,或需要连续运行观察时,则可以使用“run”按钮;当希望返回上一步操作时,则可以使用“step back”按钮;若单击“reload”按钮,则仿真器会重新加载程序,并将指令指针指向程序的第一条指令;您也可以利用“load”按钮,从您保存的文件夹中加载其它程序。

用户除使用上述工具栏中的按钮进行仿真调试外,还可以利用其菜单中的其它功能进行更高级的调试和设置。

四.多字节加法要求:在当前的数据段内(段基址寄存器DS)的偏移地址为1000H处定义4各字节的被加数78H、56H、34H、12H(即被加数为12345678H);在偏移地址2000H处定义4字节加数12H、34H、56H、78H(即加数为78563412H)程序流程:程序清单:MOV SI,1000H ;置被加数指针MOV DI,2000H ;置加数指针MOV CX,4 ;数据个数CLC ;清进位标志AGAIN: MOV AL,[SI] ;取被加数ADC AL,[DI] ;加加数MOV [SI],AL ;和送回至加数INC SI ;修改数据指针INC DILOOP AGAIN ;记数—1=0?五. 拆分字符拆字10051H程序:MOV AX,1000HMOV DS,AX ;数据段基址DS=1000HMOV SI,50H ;需拆字的指针SI=50HMOV AL,[SI] ;取字节给ALAND AL,0FH ;屏蔽高4位MOV [SI+1],AL ;得到的数据存入10051MOV AL,[SI] ;再取出需拆字的字节MOV CL,4SHR AL,CL ;逻辑右移4次,高4位补0MOV [SI+2],AL ;存入10052单元五.实验内容(实验程序及结果写在练习本上)。

8086实验指导书

8086实验指导书

频率 300KHz 8088
AEDK88ET
与PC机连
ADC0809
8279
VCC GND
8259 蜂呜器 8位开关
8251 8253 62256
39
I/O译码电路
40
第四章 硬件接口实验
41

实验一
一、实验要求
双色灯实验
编写程序,以8255为输出口,控制四个双色灯按红、绿、黄的要求发光。
二、实验目的
35
8. 实验仪必须如下显示才算加载成功
只有显示8688 2.1 才算加载成功
36
9.如何知道程序是不是处在执行状态,可观察如下几个位 置:

交替闪烁

交替闪烁
37
10.如何中止程序的执行
1.中止执行程 序按HALT
2 .恢复初始 状态按RST
38
电位器 译码器地址 8位LED 电源开关
交通灯 DAC0832 8255
26
主程序 调用inword 调用sort BUFF→SI [SI]→AL 调用display SI+1
Display子程序 AL/10→AL,AH AL+30H→AL AH+30H→AH AH→DH AH=2 调用 INT21H显示 显示空格 CX-1 CX=0? 结束
27
A
DH → AL
AH=2调用 INT21H显示 RET
23
实验二 从键盘输入并换
一. 实验要求 从键盘输入5个有符号2位十进制数,将它转换成有符号二进制数, 将结果送入内存中buff开始的单元中。 二. 实验目的 掌握键盘接受数据的方法,码制转换。 三. 实验程序框图 算法: ①符号字符串→标识符MINU。若为负, MINU=1; ②数字字符(31H~39H)→一位十进制数(0~9)a0,a1,a2… ③十进制数转换成十六进制数: 十六进制数=a2x100+a1x10+a0 =(a2x10+a1) x10+a0 ④ 转换后查符号,如果是负数,取补 码制转换部分流程图: 24

两个多位十进制数相加实验

两个多位十进制数相加实验

实验一两个多位十进制数相加实验一、实验目的1.熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。

2.掌握数据传送、算术运算、BCD码调整和循环指令的用法,掌握字符显示的方法。

3.熟悉和掌握用DEBUG调试程序的方法。

二、实验内容及要求1.将两个5位十进制数相加,要求被加数(本题选47193)和加数(本题选28056)均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回以DATA3为首的5个内存单元中(低位在前),并显示相加的结果。

2.如果考虑可能产生的进位,则要显示完整的结果,程序如何修改?3.应该Masm for Windows 集成实验环境调试运行并讲解程序,并用屏幕录像软件录制全过程,全程开启摄像头,以MP4G格式上传,完成实验报告的书写。

三、实验程序和结果DATA SEGMENT ;定义数据段DATA1 DB 33H,39H,31H,37H,34H ;被加数DATA2 DB 36H,35H,30H,38H,32H ;加数DATA3 DB 5 DUP(?) ;定义五个空子节DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA ;表明程序代码段与段地址之间的关系START: MOV AX,DATAMOV DS,AX ;将段地址送入段地址寄存器MOV CX,5 ;循环控制次数MOV SI,0CLC ;清除CF位NEXT: MOV AL,DATA1[SI]ADC AL,DATA2[SI] ;从低位开始进行带进位/借位的加法运算AAA ;转换成非压缩BCD码,低位存AL,高位存AHMOV DATA3[SI],AL ;将AL中的内容存入SI所在地址INC SILOOP NEXTMOV SI,5DISP: ADD DATA3[SI-1],30H ;将16进制数转换为ASCII码表示 MOV DL,DATA3[SI-1]MOV AH,2INT 21HDEC SI ;偏移地址自减JNZ DISPMOV AH,4CHINT 21H ;终断调用CODE ENDS ;结束程序代码段END START(页面不足请附页)四、实验总结和体会通过本次实验我对汇编有了更加具体的认识,也明白了汇编中各个寄存器的作用及寄存器间是怎样联系的,也初步明白了什么是断地址,什么是堆栈,以及汇编的基本结构和循环结构的基本运用,但是我了解的只是初步的,汇编中还有很多我不明白和不了解的地方,最重要的是汇编语句掌握不牢固,不能很快的知道一些专用的汇编语句的意义,这方面还是比较薄弱的,还需要在今后的实验和学习中不断的学习和练习。

综合课程设计——两位十进制数加法实验报告DOC

综合课程设计——两位十进制数加法实验报告DOC

标准实验报告学生姓名:指导教师:一、实验室名称:二、实验项目名称:综合课程设计——两位十进制数加减法的实现三、实验原理:1、FPGA的矩阵键盘开发板上设计了行列式矩阵编码键盘,规模为4*4,可作为外部输入。

其对应管脚分布如下:2、自由按键电路KEY1 对应P102,KEY2 对应P101。

3、拨码开关板上设计了一组8 位的拨码开关,ON为低电平,OFF为高电平。

拨码开关可供用户输入一些高低电平。

4、键盘扫描及数码显示对键盘的扫描分为三步,首先检测由于没有按键按下,然后在有按键按下的情况下,先进行行扫描找出对应按键是哪行按下,接着是对应的列扫描最终确定是哪一个按键。

给对应的按键赋上预先设定的值连接到数码管便能控制数码管显示。

我们需要如下几个信号来实现编写这一部分程序:key_code,用来控制数码管显示相应的值;row,用来控制行扫描;column,用来控制列扫描。

要利用8个数码管显示8个不同的数字,由于此为动态显示,送到每一段的值都一样,利用显示使能en,来控制亮灭,同时提高显示时钟频率,可以实现8位数码管的不同值显示。

5、去抖利用普通的CASE语句编写的程序会出现按键按下值会一直递增的现象,我们需要一个优化的能够实现对长按下的键只记一次。

需要重新自己设定一个去抖参数。

个人思想如下:设定去抖参数qudou,当没有按键按下时其自动置为0,在检测按键时如果同时检测都qudou=0才做对应键值加1的操作且同时把去抖参数置为1;如此便能够实现。

6、两位十进制加减法实现原理加数和被加数的输入由矩阵键盘扫描完成,具体实现是,利用状态机,一个状态来进行加数的输入然后跳转到另一状态,进行被加数的输入,两个数输入完成后,下一状态为显示结果。

同时需要一位来控制是做加法还是减法。

状态机设计,利用VHDL设计有限状态机分为两个定义,三个进程。

两个定义分别用来定义状态变量以及状态机的状态;三个进程分别用来描述状态寄存器状态,状态转移进程以及状态输出。

微机实验:两个多位十进制数相加的实验

微机实验:两个多位十进制数相加的实验

实验一、两个多位十进制数相加的实验1、实验目的(1).学习数据传送和算术运算指令的用法。

(2).熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。

2、实验内容将两个多位十进制数相加。

要求被加数均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回DATAl处。

3、程序框图4、参考程序:DATAS SEGMENTDAT1 DB 5 DUP (0)DAT2 DB 5 DUP (0)DAT3 DB 6 DUP(0)JH DB'+','$'HX DB'_______','$';此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV DL,20H; 输入空格用以竖式对齐MOV AH,02HINT 21HLEA BX,DAT1MOV CX,5INADD1: MOV AH,01HINT 21HMOV [BX],ALINC BXLOOP INADD1MOV DL,0AH; 换行MOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HLEA DX,JH; 输出加号MOV AH,09HINT 21HLEA SI,DAT2MOV CX,5INADD2: MOV AH,01HINT 21HMOV [SI],ALINC SILOOP INADD2MOV DL,0AH;换行MOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HLEA DX,HX; 输出横线MOV AH,09HINT 21HMOV DL,0AH;换行MOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21H;以下计算结果LEA BX,DAT1+4LEA SI,DAT2+4LEA DI,DAT3+5MOV CX,5CLC ;清除CF标志位L1: MOV AL,[BX]ADC AL,[SI]AAAPUSHFOR AL,30H; 将AL转换为ASCII码POPFMOV [DI],ALDEC DIDEC BXDEC SILOOP L1MOV CL,6;6位循环6次JNC OUT1;没有进位直接输出MOV byte ptr [DI],31H;有进位给最高位赋1 ;以下输出显示OUT1:MOV DL,[DI]INC DIMOV AH,02HINT 21HLOOP OUT1MOV AH,4CHINT 21HCODES ENDSEND START。

两个多位十进制数相加实验

两个多位十进制数相加实验

实验一两个多位十进制数相加实验一实验目的1学习数据传送及算术运算指令的用法2 进一步熟悉汇编语言上机过程二、实验要求1 独立完成每个实验项目2 按照程序流程图编好实验程序三程序框图Array加程序四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在软件上调试实验程序3 写出实验结果实验二将键盘输入的小写字母转换成大写字母一实验目的了解小写字母和大写字母在计算机内的表示方法,学习如何转换二、实验要求1 独立完成每个实验项目2三程序框架加程序四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在软件上调试实验程序3 写出实验结果实验三输入字符一实验目的1学习数据传送及算术运算指令的用法2 进一步熟悉汇编语言上机过程加程序四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在软件上调试实验程序3 写出实验结果实验四8255A并行口实验一、实验目的加深理解逐次逼近法模数转换器的特征和工作原理,掌握ADC0809的接口方法以及A/D输入程序的设计和调试方法。

二、实验要求1 理解实验程序2 掌握各个芯片的原理和使用方法。

三、实验原理PC口8位接8个开关K1~ K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。

拨动K1~ K8,PB口上接的8个发光二极管L1~ L8对应显示K1~ K8的状态。

程序:CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0073HIOAPT EQU 0070HIOBPT EQU 0071HIOCPT EQU 0072HIOBDATA EQU 0500HCONTPORT EQU 00DFHDATAPORT EQU 00DEHDATA1 EQU 0640HSTART: J MP IOLEDIOLED: CALL FORMATCALL LEDDISPMOV DS,AXMOV AL,82HMOV DX,IOCONPTOUT DX,ALMOV DX,IOBPTIN AL,DXMOV BYTE PTR DS:[0501H],ALMOV DX,IOCONPTMOV AL,80HOUT DX,ALMOV DX,IOBPTMOV AL,DS:[0501H]OR AL,0F0HOUT DX,ALMOV DX,IOCPTMOV AL,0F0HOUT DX,ALCALL DELAY1IOLED0: MOV AL,10100101BMOV DX,IOCPTOUT DX,ALCALL DELAY1CALL DELAY1OR AL,0F0HOUT DX,ALMOV CX,8HIOLED1: MOV DX,IOBPTMOV AL,DS:[0501H]AND AL,10101111BOUT DX,ALCALL DELAY2OR AL,01010000BOUT DX,ALCALL DELAY2LOOP IOLED1MOV DX,IOCPTMOV AL,0F0HOUT DX,ALCALL DELAY2MOV AL,01011010BOUT DX,ALCALL DELAY1CALL DELAY1OUT DX,ALMOV CX,8HIOLED2: MOV DX,IOBPTMOV AL,DS:[0501H]AND AL,01011111BOUT DX,ALCALL DELAY2OR AL,10100000BOUT DX,ALCALL DELAY2LOOP IOLED2MOV DX,IOCPTMOV AL,0F0HOUT DX,ALCALL DELAY2JMP IOLED0DELAY1: PUSH AXPUSH CXMOV CX,0030HDELY2: CALL DELAY2LOOP DELY2POP CXPOP AXRETDELAY2: PUSH CXMOV CX,8000HDELA1: LOOP DELA1POP CXRETLEDDISP:MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00 LED1: CMP BYTE PTR DS:[0600H],07H JA LED2MOV BL,DS:[0600H]MOV BH,0HMOV AL,CS:[BX+DATA1]MOV DX,DATAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LED1LED2: RETFORMAT: MOV BX,0MOV WORD PTR DS:[BX+0640H],405BHADD BX,2MOV WORD PTR DS:[BX+0640H],4040HADD BX,2MOV WORD PTR DS:[BX+0640H],6D6DHADD BX,2MOV WORD PTR DS:[BX+0640H],7F5BHRETCODE ENDSEND START四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在实验机箱上连好实验线路3 观察实验现象4 分析实验结果实验五8259中断控制器实验一、实验目的1.掌握8259中断控制器的接口方法.2.掌握8259中断控制器的应用编程.二、实验要求1 理解实验程序2 掌握各个芯片的原理和使用方法。

实验一南昌航空大学两个多位十进制数相减实验

实验一南昌航空大学两个多位十进制数相减实验

微机原理实验南昌航空大学实验报告学生姓名:学号:专业班级:电子信息工程实验类型: 验证□综合□设计□创新实验日期:实验成绩:一、实验项目名称实验一、多位十进制数相减实验二、实验目的(1)学习数据传送和算术运算指令的用法。

(2)熟悉在PC机上建立、汇编、连接、调试和运行汇编语言的过程。

三、实验要求将两个多位十进制数相减,要求被减数、减数均以ASCII码形式按顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。

实验程序框图如下图所示:四、实验程序DATA SEGMENTDATA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)DATA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)MES1 DB'-','$'MES2 DB'=','$'DATA ENDSSTACK SEGMENT;堆栈段STA DB20 DUP(?) ;定义由20个字节组成的数据缓冲区(数组),每个字节的初值不确定TOP EQU LENGTH STA 返回利用DUP定义的数组元素的个数到TOP,TOP=20;STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA; START: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXMOV AX,TOP 段使用设定语句,确定段寄存器与段的对应关系:从现在开始:CS寄存器对应CODE段,DS寄存器对应数据段,SS寄存器对应STACK段,ES寄存器对应数据段.段使用设定语句是伪指令,它不能设置段寄存器的值,只能通过指令语句给DS, ES, SS赋值,CS 由系统自动赋值。

堆栈指针寄存器赋值MOV SP,AX MOV SI,OFFSET DATA1 被减数送SIMOV BX,05 位数5送BX 中,作为显示子程序的循环控制变量CALL DISPL ;调用显示子程序,显示被减数 MOVAH,09HLEA DX,MES1INT 21HMOV SI,OFFSET DATA2 减数送SI MOV BX,05CALL DISPL 调用显示子程序,显示减数 MOV AH,09HLEA DX,MES2INT 21HMOV SI,OFFSET DATA1 被减数送SIMOV DI,OFFSET DATA2 减数送DICALL SUBA ;调用减法子程序 ,进行减法运算MOV SI,OFFSET DATA1 运算结果送SI MOV BX,05 ;CALL DISPL 调用显示子程序,显示运算结果MOV DL,0DHMOV AH,02HINT 21H MOV DL,0AHMOV AH,02HINT 21H INT 21H MOV AX,4C00H INT 21HDISPL PROC NEAR ;显示子程序(显示5个字符:BX=5) DSI: MOV AH,02 AH=02H,显示一个字符到屏幕 MOV DL,[SI+BX-1] ;显示字符串中一字符 INT 21HDEC BX ;修改偏移量JNZ DSI BX 不等于0,继续显示 RET DISPL ENDPSUBA PROC NEARMOV DX,SI 把被减数数据地址送到DXMOV BP,DI 把减数数据地址送到BP MOV BX,05SU1: SUB DOS 功能调用:AH=09H,显示字符串到屏幕,DX::要显示的内容。

微机原理实验程序

微机原理实验程序

第四章 软件实验部分实验一 两个多位十进制数相减实验一、实验要求:将两个多位十进制数相减,要求被减数,减数均以ASCII 码形式按顺序存放在以DA T AI和DA T A2为首的5个内存单元中(低位在前),结果送回DA T AI 处。

处。

二、实验目的:1.学习数据传送和算术运算指令的用法。

.学习数据传送和算术运算指令的用法。

2.熟悉在PC 机上建立、汇编、链接、调试和运行汇编语言程序的过程。

机上建立、汇编、链接、调试和运行汇编语言程序的过程。

三、实验步骤:连好实验箱后接通电源,连好实验箱后接通电源,打开上位机软件打开上位机软件88TE 进入软件调试界面:进入软件调试界面:点击点击点击“文件“文件\打开”打开”文文件路径为C :\88TE\cai\asm\Ruanjian\Rjexp1.asm 。

具体操作如图所示:文件。

点击编译连接生成可执行的exe文件。

通过单步运行调试程序,打开寄存器查看其变量变化情况。

通过单步运行调试程序,打开寄存器查看其变量变化情况。

四、实验程序框图:五、实验程序:文件路径为C :\88TE\cai\asm\Ruanjian\Rjexp1.asm DA DATA SEGMENT TA SEGMENT DA DATA1 TA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)第一个数据(作为被减数) DA DATA2 TA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)第二个数据(作为减数) MES1 DB '-','$' MES2 DB '=','$' DA DATA ENDS TA ENDS STACK SEGMENT ;堆栈段堆栈段 STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT TA,SS:STACK,ES:DA ASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DAT T A START: MOV AX,DA TA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP ,AX MOV SI,OFFSET DATA1 MOV BX,05 CALL DISPL ;显示被减数显示被减数 MOV AH,09H LEA DX,MES1 INT 21H MOV SI,OFFSET DA T A2 MOV BX,05 ;显示减数显示减数 CALL DISPL MOV AH,09H LEA DX,MES2 INT 21H MOV SI,OFFSET DATA1 MOV DI,OFFSET DA T A2 CALL SUBA ;减法运算减法运算 MOV SI,OFFSET DA T A1 MOV BX,05 ;显示结果显示结果 CALL DISPL MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H 显示减数和被减数被减数和减数转换成十六进制数设 置 计 数 值 消除最低进位数 开 始制进位减 结果送被减数区调整偏移量 计数值-1=10 结果转换成ASCII 码字符串显示结果 结果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 ST ART实验二 两个数相乘的实验一、实验要求:实现十进制数的乘法,实现十进制数的乘法,被乘数和乘数均以被乘数和乘数均以ASCII 码形式存放在内存中,码形式存放在内存中,算式结果在屏幕上显算式结果在屏幕上显示出来。

十进制的减法

十进制的减法

十进制的减法在数学运算中,减法是一种常见的运算方式,用于计算两个数之间的差。

在十进制中,我们使用0到9这10个数字进行运算。

本文将介绍十进制的减法,并且详细解释如何进行减法运算,以及一些注意事项。

1. 十进制的减法规则十进制的减法规则非常简单,以下是十进制减法的步骤:- 从被减数的个位开始,逐个位进行减法运算;- 如果被减数的某位数字小于减数的对应位数字,则需要向高位借位;- 如果被减数的某位数字大于或等于减数的对应位数字,则直接相减得到该位的差;- 若所有位数都计算完毕后,即得到最终结果。

2. 举例说明为了更好地理解十进制减法的步骤,我们来看一个具体的示例:减数为53,被减数为28。

53- 28-----从个位数开始计算,我们发现被减数的个位数字8大于减数的个位数字3,所以直接相减得到差为5,并写在个位数下方。

53- 28-----25然后我们继续计算十位数。

被减数的十位数字2小于减数的十位数字5,此时需要向高位借位。

我们从被减数的百位借位一个单位,百位上的数字减1,也就是变成原来的数值1。

43(原始的被减数)- 28-----15现在我们可以继续计算十位数,被减数的十位数字变成了12。

由于12大于减数的十位数字5,所以直接相减得到差7,并写在十位数下方。

53- 28-----25最后,我们完成了所有位数的减法运算,得到的差为25。

3. 特殊情况在十进制减法中,还存在一些特殊的情况需要考虑。

3.1 减数大于被减数如果减数大于被减数,那么结果将会是一个负数。

例如,减数为78,被减数为89:78- 89-----由于7小于8,我们需要向高位借位。

但是在十进制中,没有负数的表示方式,所以无法进行减法运算。

3.2 减数和被减数相等如果减数和被减数相等,那么结果将会是0。

例如,减数和被减数都为42:42- 42-----00由于两个数相等,每一位数字相减都为0,所以最终差为0。

4. 总结十进制的减法运算是数学中的基本运算之一,可用于计算两个十进制数之间的差。

实验二 算术运算实验

实验二 算术运算实验

实验二算术运算实验一、实验目的1、掌握MASMforWindows环境下的汇编语言编程环境使用;2、掌握汇编语言程序设计的基本流程及汇编语言中的二进制、十六进制、十进制、BCD码的表示形式;3、掌握汇编语言对多精度十六进制和十进制的编程方法及运算类指令对各状态标志位的影响及测试方法;4、掌握无符号数和有符号数运算区别及编程方法;5、掌握BCD码调整指令的使用方法二、软硬件实验环境1、硬件环境:惠普64位一体化计算机及局域网;2、软件环境:windows8,红蜘蛛管理系统,MASMforWindows。

三、实验基本原理算术运算实验需要对运行结果进行调试及查看状态字,其相关知识如下。

1) 标志位在debug调试过程中,标志位用特殊符号表示的,其标志名和状态符号的对照表参照表1所示。

表1标志名和状态符号的对照表参照表2) 加减法指令ADD表示加法指令,ADC表示带进位加法指令,SUB表示减法指令,SBB表示带进位减法指令。

3) 乘除法指令MUL表示无符号数乘法指令,IMUL表示带符号数乘法指令,DIV表示无符号数除法指令,IDIV表示带符号数除法指令。

4) 符号位扩展指令CBW表示从字节扩展到字的指令,CWD表示从字扩展到双字的指令。

5) BCD码的调整指令在进行十进制加减运算时,需要将数据用BCD码表示,还要考虑到是组合BCD码还是非组合BCD码,组合BCD码是用一个字节表示两位十进制数,非组合BCD码是用一个字节表示一位十进制数,对于组合的BCD码加减法运算其结果存放在AL中。

组合的BCD码加法调整指令DAA;组合的BCD码减法调整指令DAS;非组合的BCD码加法调整指令AAA;非组合的BCD码减法调整指令AAS;乘法的非组合BCD码调整指令AAM;除法的非组合BCD码调整指令AAD。

8088/8086指令系统提供了实现加、减、乘、除运算指令,可参照表2所示内容。

表2数据类型的数据运算表四、实验步骤与内容1)对于表格中三组无符号数,试编程求这三组数的指定运算结果,并考虑计算结果对标志寄存器中状态标志位的影响:①实验分析本实验要求简单,仅对指定三组数进行基本运算。

新编微机原理(B)实验指导书(2010学生版)2

新编微机原理(B)实验指导书(2010学生版)2

班级学号姓名实验日期实验一两个多位十进制数相加实验一、实验目的1.熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。

2.掌握数据传送、算术运算、BCD码调整和循环指令的用法,掌握字符显示的方法。

3.熟悉和掌握用DEBUG调试程序的方法。

二、实验内容1.将两个5位十进制数相加,要求被加数(本题选47193)和加数(本题选28056)均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回以DATA3为首的5个内存单元中(低位在前),并显示相加的结果。

2.将第1题改为(高位在前)的形式存放数据,程序如何修改?3.上述程序只显示了相加的结果,没有显示被加数和加数,如果在第1题的基础上将显示格式改为47193+28056=75249,则程序如何修改?4.上面程序没有考虑运算结果最高位有进位的情况,如果考虑可能产生的进位,则要显示完整的结果,程序如何修改?(提示:INC和LOOP指令均不影响CF)三、实验要求1.实验内容1、内容2为基础题,必须做,完成后可得7分。

2.实验内容3为提高题,完成后可再加2分.3.实验内容4为提高题,完成后可再加1分。

四、实验程序和结果1.将两个5位十进制数相加,要求被加数(本题选47193)和加数(本题选28056)均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回以DATA3为首的5个内存单元中(低位在前),并显示相加的结果。

DATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H ;存放被加数47193,ASCII码形式,低位在前DATA2 DB 36H,35H,30H,38H,32H ;存放加数28056,ASCII码形式,低位在前DATA3 DB 5 DUP(?);留出5个存放结果的单元DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV CX,5 ;循环次数置5,5个位要相加5次MOV SI,0 ;SI放地址位移量,每个数的第一字节地址位移量为0CLC ;CF清0,防止第1个字节相加时ADC指令多加CF中可能的1 NEXT:MOV AL,DATA1[SI];取被加数一个字节送AL,DATA1偏移地址+SI为有效地址ADC AL,DATA2[SI] ;AL+加数对应字节+CF(低位相加时可能的进位)结果送ALAAA ;AL中两字节相加的和调整成非压缩的BCD码,进位在CF中MOV DATA3[SI],AL ;结果送入DATA3对应字节单元中INC SI ;地址位移量加1指向高一位字节单元LOOP NEXT ;5次未到,继续循环MOV SI,5 ;显示5个位,SI中的数既是循环次数又作地址位移量DISP:ADD DATA3[SI—1],30H ;将结果从高位单元开始把非压缩的BCD码变成ASCII码 MOV DL,DATA3[SI—1];将ASCII码送DL以满足2号功能调用的规定要求MOV AH,2 ;功能号送AHINT 21H ;调用2号功能,显示一位数字DEC SI ;次数减1JNZ DISP ;5次未到,继续循环MOV AH,4CH ;功能号送AHINT 21H ;调用4CH号功能,返回DOSCODE ENDSEND START运行结果:752492.将第1题改为(高位在前)的形式存放数据,程序如何修改?(要求给出程序、注释、运行结果) 五、实验总结和体会班级学号姓名实验日期实验二字符串匹配实验一、实验目的1.掌握提示信息的使用方法及键盘输入字符串的用法。

软件两个多位十进制数相减.doc

软件两个多位十进制数相减.doc

软件实验两个多位十进制数相减运行结果:程序代码DA TA SEGMENTDA TA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)DA TA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)MES1 DB '-','$'MES2 DB '=','$'DA TA ENDSSTACK SEGMENT ;堆栈段STA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DA TASTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DA TA1MOV BX,05CALL DISPL ;显示被减数MOV AH,09HLEA DX,MES1INT 21HMOV SI,OFFSET DATA2MOV BX,05 ;显示减数CALL DISPLMOV AH,09HLEA DX,MES2INT 21HMOV SI,OFFSET DA TA1MOV DI,OFFSET DATA2CALL SUBA ;减法运算MOV SI,OFFSET DATA1MOV BX,05 ;显示结果CALL DISPLMOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHMOV AH,02HINT 21HINT 21HMOV AX,4C00HINT 21HDISPL PROC NEAR ;显示子功能DSI: MOV AH,02MOV DL,[SI+BX-1] ;显示字符串中一字符INT 21HDEC BX ;修改偏移量JNZ DSIRETDISPL ENDPSUBA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05SU1: SUB BYTE PTR[SI+BX-1],30HSUB BYTE PTR[DI+BX-1],30HDEC BX ;将ASCII 码表示的数字串JNZ SU1 ;转化为十六进制的数字串MOV SI,DXMOV DI,BPMOV CX,05 ;包括进位,共5位CLC ;清进单位SU2: MOV AL,[SI]MOV BL,[DI]SBB AL,BL ;带进位相减AAS ;非组合BCD码的减法调整MOV [SI],AL ;结果送被减数区INC SIINC DI ;指向下一位LOOP SU2 ;循环MOV SI,DXMOV DI,BPMOV BX,05SU3: ADD BYTE PTR [SI+BX-1],30HADD BYTE PTR [DI+BX-1],30HDEC BX ;十六进制的数字串转化ASCII码表示的数字串JNZ SU3RETSUBA ENDPCODE ENDSEND START硬件实验开关状态显示实验程序代码STACK SEGMENT STACKSTA DW 50 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACKSTART:MOV DX,203H ;设置为b口输入,c口输出MOV AL,92HOUT DX,ALBG: MOV DX,201H ;将b口状态从c口输出IN AL,DXMOV DX,202hOUT DX,ALJMP BGCODE ENDSEND START。

实验三、多字节、多进制加减运算实验

实验三、多字节、多进制加减运算实验

实验三、多字节、多进制加减运算实验一、实验目的1.学习多字节压缩BCD码加减法运算的程序设计2.学习单字节有符号数加减运算的程序设计二、实验要求1.编写通用4字节压缩BCD码的加、减法运算程序2.编写通用单字节有符号二进制数加、减法运算程序三、实验原理对于简单的8位加减可以直接调用指令就可以了。

例如加法可以使用指令ADD以及带进位加ADDC,但单字节加减法只能在256之内进行运算;在实际应用中经常需要进行多字节运算,从而处理更大的数据。

该实验介绍单片机BCD 码多字节加、减运算通用程序的设计。

1.多字节无符号压缩BCD码加法运算假设多字节无符号被加数的最低字节的地址为R0,加数的最低字节地址为R1,字节数共为len;计算结果的地址于被加数相同。

◆xx参数:R0:被加数地址指针;R1:加数地址指针;len:字节数。

◆出口参数:@R0:计算结果;rLen:计算结果字节数。

◆使用资源:ACC,R0、R1,内部RAM单元len、rlen及存放被加数、加数、计算结果的内存单元。

示例程序如下:ADDl:PUSH PSW;保护标志寄存器内容CLR C;进位位清0MOV rlen,#00H;和的字节数先清0ADD:MOV A,@R0;取被加数ADD A,@R1;求和DA A;十进制调整MOV @R0,A;保存INC R0;地址增1INC R1INC rlen;字节数增1DJNZ len,ADD;所有字节未加完继续,否则向下执行JNC ADD20;和的最高字节无进位转ADD20MOV @R0,#01H;和的最高字节地址内容为01HINC rlenADD20:POP PSWRETEND多字节加法运算一般是按从低字节到高字节的顺序进行的,所以必须考虑低字节向高字节的进位情况,被加数和加数的压缩BCD码,最大不超过99,而99+99+1(进位)=199,此时不需要使用ADDC指令,但当两字节当最低两字节相加后,必须使用“DA A”进行十进制调整,调整后产生进位。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一两个多位十进制数相减实验
一、实验要求:将两个多位十进制数相减,要求被减数,减数均以ASCII码形式按顺序存放在以DATAI
和DATA2为首的5个内存单元中(低位在前),结果送回DATAI处。

二、实验目的:1.学习数据传送和算术运算指令的用法。

2.熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

三、实验程序框图:
开始
显示减数和被减数
被减数和减数转换成十六进制数
设置计数值
消除最低进位数
制进位减
结果送被减数区
调整偏移量
计数值-1=10
结果转换成ASCII码字符串
显示结果
结果
四、实验程序:
DA TA SEGMENT
DA TA1 DB 33H,39H,31H,37H,38H ;第一个数据(作为被减数)DA TA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为减数)MES1 DB '-','$'
MES2 DB '=','$'
DA TA ENDS
STACK SEGMENT ;堆栈段
STA DB 20 DUP(0)
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。

相关文档
最新文档