实验一 两个多位十进制数相加的实验
多位十进制数加法器设计.

深圳大学实验报告课程名称:微机原理及应用实验实验项目名称:多位十进制数加法器设计学院:物理科学与技术学院专业:应用物理指导教师:报告人:学号:班级:应用物理班实验时间:2015-10-19实验报告提交时间:2015-11-02教务处制五、程序说明(预习)七、实验源程序清单(实验后以电子报告形式存储到指定位置)1.源程序路径及文件名:ADD2.ASM ADD1.ASM2.可执行程序路径及文件名:八、上机调试情况说明EMU8086:一:没有键盘录入1.结果显示如下:2.程序运行时的各段地址:3.两个子程序IP入口:4.改变两个加数数值5.子程序格式及其调用方法和宏汇编区别子程序格式:子程序名称PROC NEAR ; 子程序定义; …子程序内容RET ;子程序返回子程序名称ENDP ;子程序结束调用格式:CALL 子程序名称注意事项:1、子程序不能直接传递参数,需要自行定义变量。
2、注意保护现场和恢复现场。
宏汇编与子程序的区别:1、宏汇编有宏展开,子程序没有2、宏汇编可以传递参数。
二:键盘录入DOS:例如:250+250=500例如:62142+63123=125265九、实验结果与分析结果如下:十、实验总结(必备部分,评分重要依据之一)本次实验实则是对实验二的加强巩固基础上,进行更加友好的人机交互设计;通过本次实验不仅在程序中首先把两个加数固定,在实验二的基础上扩展位数,考虑到最高位进位的情况,并最终得出正确结果;后来又通过键盘录入两个加数,增加了人机交互的设计,如此一来,更加加深了对寄存器的使用,汇编语言宏定义,子程序调用以及DOS功能调用的学习。
同时,通过本次实验的学习,更加熟练了EMU8086工具的使用,也把理论课上学习到的汇编操作指令实际操作,对汇编语言的风格加深认识。
MOV DL,BLINT 21HCRLFJMP BEGINERROR:CRLFMOV AH,09H ;显示输入错误LEA DX,STRING3INT 21HCRLFJMP BEGINEXIT:CRLFMOV AH,09H ;显示成功退出LEA DX,STRING4INT 21HMOV AH,4CHINT 21HCODE ENDSEND START(2)请问你的程序能否处理加数和被加数都介于0~65535范围但计算结果超出该范围的情况?如何改进?可以,如图:主要考虑到最高位是否进位,可以设置一个进位变量加以判断。
数据传送及两个多位十进制数相加

数据传送及两个多位⼗进制数相加深圳⼤学实验报告课程名称:微机原理及应⽤实验实验项⽬名称:数据传送及两个多位⼗进制数相加学院:物理科学与技术学院专业:应⽤物理指导教师:李雄军报告⼈:学号:班级:实验时间:实验报告提交时间:⼀、实验⽬的(1)继续熟练掌握在PC机上建⽴、汇编、链接、调试和运⾏8088汇编语⾔程序的过程;(2)学习数据传送和算术运算指令的⽤法;(3)掌握⼦程序设计⽅法;(4)掌握宏汇编设计⽅法。
⼆、实验内容将两个多位⼗进制数(若为16位⼆进制表⽰的⽆符号数)相加。
要求被加数均以ASCII码形式各⾃顺序存放在以DATAl和DATA2为⾸的5个内存单元中(低位在前),结果送回DATAl处。
三、程序流程图开始显⽰加数和被加数加数和被加数以ASCⅡ码表⽰的数字串形式转化为由⼗六进制表⽰的数字串形式赋计数值给CX清除最低位进执⾏ADC带进位相加AAA调整结果送被加数区调整偏移量显⽰加数和被加数CX-1=0⼗六进制结果转化为ASCⅡ显⽰结果结束算法说明:以42136与12547相加为例,⾸先将两个数中的每⼀位都以ASCII码存⼊相应的内存单元,然后将每⼀位数都减去30H,并将被加数和加数相对应位相加(要考虑低位向⾼位的进位),存⼊相应的被加数存储单元中,最后将该单元中的每⼀位数转换成相应的ASCII码,调⽤DOS系统的显⽰字符指令,显⽰两数相加的结果。
四、源程序代码DATA SEGMENT ; 数据段DATA1 DB 31H,33H,31H,31H,33H ;定义DATA1为被加数DATA2 DB 33H,33H,33H,32H,33H ;定义DATA2为加数DATA ENDS ;STACK SEGMENT STACK ;堆栈段STA DB 64 DUP(0) ;SP_TOP DB 0 ;定义SP_TOP单元数值为0STACK ENDS ;堆栈段结束CODE SEGMENT ; 代码段ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACK ; 指定段寄存器CFLF MACRO ;显⽰回车换⾏功能⽤宏定义CFLF实现,放在代码段最前⾯MOV DL,0DH ;回车(0DH为回车的ASCII 码)MOV AH,02H ; 送DOS 的中断调⽤功能号INT 21H ; DOS 的中断调⽤MOV DL,0AH ;⽤DOS功能调⽤实现换⾏,0AH为换⾏的ASCII 码MOV AH,02H ;显⽰字符到屏幕上INT 21H ;DOS中断调⽤CFLF ENDM ;结束宏定义START: MOV AX, DATA ;设置数据段MOV DS, AX ;数据段初始化MOV AX, STACK ;设置堆栈段MOV SS, AX ;堆栈段初始化MOV AL,SP_TOP ;设置栈顶指针MOV SI, OFFSET DATA1 ;显⽰被加数,并回车换⾏MOV BX,05 ;CALL DISPL ; 显⽰被加数,DISPL为显⽰⼦程序CFLF ; 回车、换⾏宏调⽤MOV SI, OFFSET DATA2 ;显⽰加数MOV BX,05 ;设置计数器赋值05CALL DISPL ;显⽰加数CFLF ;回车换⾏CALL ADDA ;调⽤加法运算⼦程序MOV SI,OFFSET DATA1 ;把DATA1的偏移量地址赋给SI MOV BX,05 ;CALL DISPL ; 显⽰结果CFLF ; 回车、换⾏MOV AX,4C00H ; 返回DOSINT 21H ;DOS中断调⽤DISPL PROC NEAR ;DISP为字符串显⽰⼦程序DSL: MOV AH,02 ;送显⽰功能号MOV DL,[SI+BX-1] ;显⽰字符串中⼀字符INT 21H ;DOS INT 21 功能调⽤DEC BX ;BX-1,修改偏移量JNZ DSL ;若BX不等于0,跳转到DSLRET ;返回DISPL ENDP ;⼦程序结束ADDA PROC NEAR ;加法⼦程序MOV SI, OFFSET DATA1 ;取被加数的偏移地址MOV DI, OFFSET DATA2 ;取加数偏移地址MOV AH,0 ;进位清零MOV CX,05 ;设置循环次数AD1:MOV AL,[SI] ;取被加数偏移量地址内容SUB AL,30H ;MOV BL,[DI] ;取加数偏移量地址内容SUB BL,30H ;ADD AL, BL ;ADD AL, AH ;加上进位MOV AH,0 ;进位清零AAA ;BCD⼗进制转换MOV [SI],AL ;存回DATA1的相应单元INC DI ;INC SI ;DEC CX ;JNZ AD1 ;CX未减到0继续跳转,重新执⾏次位相加MOV BX,05 ;MOV SI, OFFSET DATA1 ;AD2:ADD [SI+BX-1],30H ;相加之后转化为相应的ASCII码DEC BX ;改变循环次数JNE AD2 ;BX未减到0则跳转⾄AD2RET ;返回ADDA ENDP ;加法⼦程序结束CODE ENDS ;代码段与程序结束END START ;程序结束五、实验结果1.编译、连接⽣成可执⾏⽂件,分别在debug和Emu8086下调试该可执⾏⽂件在debug下运⾏:在emu8086下运⾏:2.给出程序运⾏时的各段地址(CS=?,DS=?SS=?ES=?)及两个⼦程序⼊⼝的IP. DISPL:IP=0054 ADDA:IP=0037CS=F400,DS=0710,SS=0711,ES=07003.试改变加数和被加数,如何从内存中观察结果的变化?4.总结⼦程序格式及其调⽤⽅法;结合本程序说明宏调⽤与⼦程序的区别。
多位十进制数加法实验报告

多位十进制数加法实验报告实验一两个多位十进制数相加的实验实验一两个多位十进制数相加的实验一、实验目的1、学习数据传送和算术运算指令的用法。
2、熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。
二、实验内容将两个多位十进制数相加。
要求被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。
三、程序框图四、程序清单CRLF MACROMOV DL,0DHMOV AH,02HINT21HMOV DL,0AHMOV AH,02HINT21HENDMDATA SEGMENTDATA1DB 33H,39H,31H,37H,34HDATA2DB 36H,35H,30H,38H,32HDATA ENDSSTACKSEGMENTSTA DB20 DUP(?)TOP EQU LENGTH STASTACKENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START:MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA2MOV BX,05CALL DISPLCRLFMOV SI,OFFSET DATA1MOV BX,05CALL DISPLCRLFMOV DI,OFFSET DATA2CALL ADDAMOV SI,OFFSET DATA1MOV BX,05CALL DISPLCRLFMOV AX,4C00HINT21HDISPLPROC NEARDS1: MOV AH,02MOV DL,[SI+BX-1]INT21HDEC BXJNZ DS1RETDISPLENDPADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05AD1: SUBBYTE PTR [SI+BX-1],30HSUBBYTE PTR [DI+BX-1],30HDECBXJNZAD1MOV SI,DXMOV DI,BPMOV CX,05CLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALINCSIINCDILOOP AD2MOV SI,DXMOV DI,BPMOV BX,05AD3: ADDBYTE PTR [SI+BX-1],30H ADDBYTE PTR [DI+BX-1],30HDECBXJNZ AD3RETADDA ENDPCODE ENDSEND START五、实验要求1.读懂源程序,写出源程序注释。
多位十进制数加法器设计.

深圳大学实验报告课程名称:微机原理及应用实验实验项目名称:多位十进制数加法器设计学院:物理科学与技术学院专业:应用物理指导教师:报告人:学号:班级:应用物理班实验时间:2015-10-19实验报告提交时间:2015-11-02教务处制五、程序说明(预习)七、实验源程序清单(实验后以电子报告形式存储到指定位置)1.源程序路径及文件名:ADD2.ASM ADD1.ASM2.可执行程序路径及文件名:八、上机调试情况说明EMU8086:一:没有键盘录入1.结果显示如下:2.程序运行时的各段地址:3.两个子程序IP入口:4.改变两个加数数值5.子程序格式及其调用方法和宏汇编区别子程序格式:子程序名称PROC NEAR ; 子程序定义; …子程序内容RET ;子程序返回子程序名称ENDP ;子程序结束调用格式:CALL 子程序名称注意事项:1、子程序不能直接传递参数,需要自行定义变量。
2、注意保护现场和恢复现场。
宏汇编与子程序的区别:1、宏汇编有宏展开,子程序没有2、宏汇编可以传递参数。
二:键盘录入DOS:例如:250+250=500例如:62142+63123=125265九、实验结果与分析结果如下:十、实验总结(必备部分,评分重要依据之一)本次实验实则是对实验二的加强巩固基础上,进行更加友好的人机交互设计;通过本次实验不仅在程序中首先把两个加数固定,在实验二的基础上扩展位数,考虑到最高位进位的情况,并最终得出正确结果;后来又通过键盘录入两个加数,增加了人机交互的设计,如此一来,更加加深了对寄存器的使用,汇编语言宏定义,子程序调用以及DOS功能调用的学习。
同时,通过本次实验的学习,更加熟练了EMU8086工具的使用,也把理论课上学习到的汇编操作指令实际操作,对汇编语言的风格加深认识。
MOV DL,BLINT 21HCRLFJMP BEGINERROR:CRLFMOV AH,09H ;显示输入错误LEA DX,STRING3INT 21HCRLFJMP BEGINEXIT:CRLFMOV AH,09H ;显示成功退出LEA DX,STRING4INT 21HMOV AH,4CHINT 21HCODE ENDSEND START(2)请问你的程序能否处理加数和被加数都介于0~65535范围但计算结果超出该范围的情况?如何改进?可以,如图:主要考虑到最高位是否进位,可以设置一个进位变量加以判断。
综合课程设计——两位十进制数加法实验报告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设计有限状态机分为两个定义,三个进程。
两个定义分别用来定义状态变量以及状态机的状态;三个进程分别用来描述状态寄存器状态,状态转移进程以及状态输出。
微机实验-2(多精度十进制加法程序设计)

实验内容及要求
2、完成程序的设计、调试程序并学习 DEBUG工具的D命令、E命令、F命令、R 命令、G命令、U命令、单T命令、N命令、 L命令、Q命令等常用调试命令的使用,运 L Q 行程序并记录结果。 3、完成实验报告。
实验内容及要求
编程思路
该题目要求掌握加法ADD、ADC指令和十进制 调整DAA指令的应用和循环程序的编程方法。为 了实现指定功能,应从以下几个方面考虑: 【1】组织数据时,要按照高位在高地址,低位在 低地址的原则。 【2】完成多精度字节数据相加运算,最低字节用 ADD指令,而其它高位字节则要用ADC指令。 还要考虑最后的进位位存储。
实验内容及要求
1、编写程序将内存两个多精度十进制数相加。 4619534937+2531498790 = 11151033727 要求被加数和加数均以压缩BCD码形式分别存放在 以DATA1和DATA2为首的连续5个字节单元中,结果 送以RESULT为首存储区。 已知变量DATA1和DATA2定义如下: DATA1 DB 37H,49H,53H,19H,46H ;被加数 DATA2 DB 90H,87H,49H,31H,65H ;加数 RESULT DB 6 DUP(?) ;结果
十进制加法计数器高精度加法微机原理实验微机实验报告微机接口实验报告微机原理实验报告微机实验微机原理实验答案南邮微机实验东南大学微机实验
实验二 多精度十进制 加法程序设计
实验目的
1、学习数据传送和算术运算指令的用 法。 2、学习循环程序编程方法。 3、掌握多字节加法计算程序的设计方 法。 4、学会使用DEBUG工具调试程序。
实验内容及要求
【3】因为被加数和加数都以压缩BCD码表示,所以 在加法指令之后要有压缩BCD码加法调整指令DAA。 【4】题目要求完成5个字节十进制数相加,所以应 采用循环程序结构。 【5】 程序结束时应使用DOS系统功能调用返回系统 提示符。即程序代码段的最后两条指令应是: MOV AH,4CH INT 21H
实验二两个多位十进制数相加实验报告

南昌理工学院实验报告二O一二年月日课程名称:微机原理与接口技术实验名称:两个多位十进制数相加班级:姓名:同组人:指导教师评定:签名:【一、实验名称】两个多位十进制数相加【二、实验目的】1、熟悉DOS系统命令;学习数据传送和算术运算指令的用法。
2、熟悉在PC机上建立、汇编、链接、调试和执行汇编语言程序的过程。
3、初步练习用DEBUG调试程序运行8086汇编语言程序的过程。
【三、实验内容和原理】将两个5位十进制数相加。
要求被加数和加数均以ASCII码形式各自顺序存放在以DA TA1和DATA2为首地址的5个内存单元中(低位在前),结果送回DATA1处。
另外,程序利用DOS的9号调用功能完成将被加数、加数和最后的和在显示器上的显示。
【四、实验条件】微型计算机一台,软件MASM【五、实验过程】1、用编辑软件,输入以下汇编语言源程序:参考程序如下:data segmentdata1 db , , , , ,'$'data2 db , h, , , , '$'data endsstac segmentsta db 100 dup (?)stac endscode segmentassume cs:code, ds:data, ss:stac, es:datastart proc farpush dsxor ax, axpush axmov ax, datamov ds, axmov es, axmov ah, 9mov dx, offset data1int 21hmov ah, 2mov dl, '+'int 21hmov ah, 9mov dx, offset data2int 21hmov si, offset data1mov di, offset data2mov bx, 5push bxpush siconv1: and byte ptr[si+bx-1], 0fhand byte ptr[di+bx-1], 0fhdec bxjnz conv1mov cx, 5xor ax, axadd1: mov al, [si+4]mov bl, [di+4]adc al, blaaamov [si+4], aldec sidec diloop add1pop sipop bxconv2: or byte ptr[si+bx-1], 30hdec bxjnz conv2mov ah, 2mov dl, '='int 21hmov ah, 9mov dx, siint 21hretstart endpcode endsend start2.通过编译,连接形成可执行文件3.运行。
两个多位十进制数相加实验

实验一两个多位十进制数相加实验一实验目的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 掌握各个芯片的原理和使用方法。
微机原理实验之两位十进制数相加

计算机硬件实验室实验报告课程名称:微机原理及应用
三.实现方法(含实现思路、程序流程图、实验电路图和源程序列表等)
源代码:
Mov AH,1
Int 21H
Mov BH, AL
Mov AH,1
AND Bh, 0fH
Int 21h
Mov BL,AL
AND Bl, 0fH
Mov DL, '+'
Mov AH, 2
Int 21h
MOV AH, 1
INT 21H
Mov CH,AL
AND CH, 0fH
Mov AH, 1
INT 21H
Mov CL,AL
AND CL, 0fH
ADD BL, CL
Mov Al,BL
Mov AH,00H 四.实验结果分析(含执行结果验证、输出显示信息、图形、调试过程中所遇的问题及处理方法等)
结论如上图
五.结论
本次实验完成了简单的两个两位十进制数相加。
完成了表达式的输出,将实验跟理论相结合,加深了对知识的理解。
AAA Mov Bl,Al ADC BH,CH Mov AL,BH Mov AH,00H AAA Mov CH,AH Mov CL,Al ADD BL, 30H ADD CX, 3030H Mov DL, '=' Mov AH, 2 Int 21H Mov DL,CH Mov AH, 2 Int 21H Mov DL, CL Mov AH, 2 Int 21H Mov DL,BL Mov AH, 2 INT 21H。
微机原理实验之两位十进制数相加

微机原理实验之两位十进制数相加实验目的:了解和掌握两位十进制数相加的原理和方法,熟悉数字电路的组成和工作原理。
实验器材:数字计算器、示波器、两位十进制加法器。
实验原理:在计算机中,数字电路是基础。
而十进制数相加是数字电路中最基本的运算之一、十进制数可以用二进制数表示,通过逻辑门和添加器电路可以实现十进制数的加法运算。
十进制数是由0~9这10个基本数字组成。
每一位都有从0到9的取值范围。
当两位十进制数相加时,需要对个位、十位等位上的数字进行相加,并向高一位进位。
具体的加法过程可以通过数字电路来实现。
一个两位十进制数相加的示例:23+56首先从个位数开始相加,3+6=9,个位上的结果是9;然后从十位数开始相加,2+5=7,十位上的结果是7;将个位和十位上的结果合并,得到最终结果79实验步骤:1.准备好实验器材,确保电路连接的正确性。
2.输入两个需要相加的两位十进制数,例如23和56,将这两个十进制数转化为二进制数。
3.将两个二进制数输入到相应的输入端口,将输入数送入两位十进制加法器。
4.确认输入数的有效性,检查输入数的范围是否符合要求。
5.等待计算器输出结果,结果以二进制数的形式表示。
6.确认结果的正确性,将输出数转化为十进制数。
7.对比计算结果与预期结果,分析原因。
实验结果:输入数:23、56预期结果:79实际结果:79分析和讨论:在本次实验中,我使用了两位十进制加法器,将两个两位十进制数相加。
实验结果显示,实际结果与预期结果一致,说明实验顺利完成。
通过这个实验,我了解到了两位十进制数相加的原理和方法。
在实际应用中,十进制数相加往往需要通过数字电路来实现。
对于更高位数的十进制数相加,可以通过级联多个十进制加法器来实现。
总结:通过本次实验,我掌握了两位十进制数相加的原理和方法,了解了数字电路的组成和工作原理。
继续深入学习和实践,在实际应用中灵活运用数字电路知识,将有助于提高计算和运算效率。
微机原理软件实验

微机原理实验报告专业:工业工程姓名:刘雷学号:089094082指导老师:陈全目录软件实验一汇编语言程序的调试与运行 (3)一.实验目的 (3)二.实验内容 (3)三.程序框图 (3)四.程序清单 (4)五.调试步骤 (6)六.思考题 (6)软件实验二分支程序设计 (14)一.实验目的 (14)二.实验内容与要求 (14)三.程序框图 (15)四.程序清单: (16)五.思考题 (17)软件实验三循环程序设计 (18)一.实验目的 (18)二.实验内容与要求 (18)三.程序框图 (19)四.程序清单(将程序补充完整) (20)软件实验四子程序结构 (22)一.实验目的 (22)二.实验内容与要求 (22)三.程序框图: (23)四.部分程序清单 (23)五.步骤 (25)六.思考题 (25)软件实验一汇编语言程序的调试与运行一.实验目的1.学习数据传送和算术运算指令的用法2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。
二.实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在DATA1和DA TA2为首的5个内存单元中,结果送回DATA1处。
三.程序框图图1.1 两个多位十进制相加程序流程图四.程序清单DISP MACRO XMOV DL,X ;要显示的字符送DL寄存器MOV AH,02H ;DOS功能调用号是02HINT 21H ;21H中断程序是DOS功能调用ENDMDATA SEGMENTDATA1 DB '12732'DATA2 DB '06815'N EQU $-DA TA2DATA ENDSSTACK SEGMENT STACKSTA DB 20 DUP (?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DA TA START:MOV AX,DA TAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXLEA SI,DATA1 ;☆MOV BX,0MOV CX,NCALL DISPL ;显示被加数DISP '+'LEA SI,DATA2MOV BX,0MOV CX,NCALL DISPL ;显示加数DISP '='LEA DI,DA TA1MOV CX,NCALL ADDA ;调用加法子程序LEA SI,DATA1MOV BX,0MOV CX,NCALL DISPL ;显示运算结果DISP 0DHDISP 0AHMOV AX,4C00HINT 21HDISPL PROC ;显示子程序DS1: MOV AH,02HMOV DL,[SI+BX]INT 21HINC BXLOOP DS1RETDISPL ENDPADDA PROC ;加法子程序PUSH CXMOV BX,0AD1: SUB BYTE PTR [SI+BX],30HSUB BYTE PTR [DI+BX],30HINC BXLOOP AD1POP CXPUSH CXMOV BX,N-1 ;☆☆CLCAD2: MOV AL,[SI+BX]ADC AL,[DI+BX]AAAMOV [DI+BX],ALDEC BXLOOP AD2POP CXPUSH CXMOV BX,0 ;☆☆☆AD3: ADD BYTE PTR [DI+BX],30HINC BXLOOP AD3POP CXRET ;☆☆☆☆ADDA ENDPCODE ENDSEND START五.调试步骤1.编辑源程序,建立一个以后缀为.ASM的文件.2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。
实验3(两个五位十进制数相加1)

提示:如计算 提示:如计算12345+67890=80235 + = 数据段定义如下: 数据段定义如下: data segment data1 db 1,2,3,4,5 data2 db 6,7,8,9,0 data3 db 5 dup(?) data ends
;定义被加数 高位在前 低位在后 定义被加数,高位在前 定义被加数 高位在前,低位在后 ;定义加数 高位在前 低位在后 定义加数,高位在前 定义加数 高位在前,低位在后 ;重复定义 个存放结果单元 重复定义5个存放结果单元 重复定义
二实验内容将两个五位十进制数相加要求被加数和加数均以非压缩的bcd码的形式各自顺序地存放在以data1和data2为首的5个内存单元中高位在前低位在后结果送回data3处只考虑最高位无进位的情三程序流程图四源程序加注释五实验步骤写出上机操作的具体步骤每一步要求仅写出具体命令屏幕显示信息不用写
实验三 一、实验目的
如果程序正确,则以 为首的5个单元的内容分别 如果程序正确,则以data3为首的 个单元的内容分别 为首的 即十进制数80235的非压缩 是:08H,00H,02H,03H,05H,即十进制数 即十进制数 的非压缩 BCD码。 码
两个五位十进制数相加(1) 两个五位十方法; 、掌握使用运算类指令编程及调试方法; 2、掌握循环结构程序的设计和调试方法。 、掌握循环结构程序的设计和调试方法。 二、实验内容 将两个五位十进制数相加, 将两个五位十进制数相加,要求被加数和加数均以非 压缩的BCD码的形式各自顺序地存放在以 码的形式各自顺序地存放在以DATA1和 压缩的 码的形式各自顺序地存放在以 和 DATA2为首的 个内存单元中(高位在前,低位在 为首的5个内存单元中 为首的 个内存单元中(高位在前, ),结果送回 结果送回DATA3处(只考虑最高位无进位的情 后),结果送回 处 况) 。 三、程序流程图
实验一两个多位十进制数相加的实验

实验一两个多位十进制数相加的实验一、实验目的1、学习数据传送和算术运算指令的用法。
2、熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。
二、实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。
三、程序框图四、程序清单DATA SEGMENT ;定义数据段DATA1 DB 33H,39H,31H,37H,34H ;被加数DATA1END EQU $-1DATA2 DB 34H,35H,30H,38H,32H ;加数DATA2END EQU $-1SUM DB 5 DUP() ;定义5个空字节DATA ENDSSTACK SEGMENT ;定义堆栈段STA DB 20 DUP() ;取从STA开始的20个字节为堆栈段TOP EQU LENGTH STA ;将堆栈段长度存放在TOP中STACK ENDS ;堆栈段定义结束CODE SEGMENT ;定义程序代码段ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA ;表明程序代码段与段地址之间的关系START: MOV AX,DATAMOV DS,AX ;将段地址送入段地址寄存器MOV AX,STACKMOV SS,AX ;将当前堆栈段首地址送入SSMOV SP,AX ;将堆栈段首地址送入堆栈指针寄存器MOV SI,OFFSET DATA1END ;将DATA1的偏移地址送入SIMOV DI,OFFSET DATA2END ;将DATA2的偏移地址送入DICALL ADDA ;调用子程序ADDAMOV AX,4C00HINT 21H ;中断调用ADDA PROC NEAR ;子程序段MOV DX,SI ;DX=0004HMOV BP,DI ;BP=0009HMOV BX,05H ;程序调用次数AD1: SUB BYTE PTR[SI],30H ;将被加数的ASCII码转换成十六进制数SUB BYTE PTR[DI],30H ;将加数的ASCII码转换成十六进制数DEC SI ;SI中的内容自减1DEC DI ;DI中的内容自减1DEC BX ;程序调用次数自减1JNZ AD1 ;条件转移MOV SI,DX ;回到初始位置MOV DI,BPMOV CX,05H ;循环次数控制CLC ;清除CF位AD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BL ;从低位开始进行带进/借位的加法运算AAA ;转换成非压缩BCD码,低位存于AL,高位存于AH MOV [SI],AL ;将AL中的内容存入SI所在地址DEC SI ;偏移地址自减DEC DI ;偏移地址自减LOOP AD2 ;循环控制指令MOV SI,DXMOV DI,BPMOV BX,05HAD3: ADD BYTE PTR[SI],30H ;将16进制数转换为ASCII码表示 ADD BYTE PTR[DI],30HDEC SI ;偏移地址自减DEC DIDEC BXJNZ AD3RET ;返回指令ADDA ENDP ;结束子程序CODE ENDS ;结束程序代码段END START五、实验结果(截屏--软件实验或者拍照---硬件实验)六、实验结果分析(预期结果与实际结果的对照)1、数据段分析用ASCII码值的形式表示被加数和加数被加数=39174;加数=450822、堆栈段分析用于存放计算过程中的过程量。
04两个多位十进制数相加实验

实验原理
(2)BCD算术运算调整的基本原理 以组合十进制数加法运算为例: 当两数相加后,进位位C和半进位位A均为零,即 结果的高低4位均未大于9,则不需调整; 当两数相加后,结果的低4位大于9,即半进位位 A=1,则结果加06H; 当两数相加后,结果的高4位大于9,则结果加 60H; 当两数相加后,结果的低4位大于9,即半进位位 A=1,且同时进位位C=1,则结果加66H。
实验报告要求
1、记录实验中具体数据,并做整理和分析。
2、对程序进行逐行的详细注释。
3、将程序试改为减法,写出修改后的程序
指令、画出流程图、记录运行数据。
调用号
1 2 8
Байду номын сангаас功能
输入并显示一个字符
入口参数
出口参数
屏幕显示一个字符
DL中预先放入待显 示字符的ASCII码 执行后输入字符的 ASCII码存在AL中 DS:DX中存入字符 串首地址,字符串 必须要有$作为最后 结尾 DS:DX中设置字符 串首地址,且第1个 单元为允许输入最 大字符个数(外加1 个回车符) 执行后,实际输入 的字符个数存在字 符串第2个单元,字 符内容从字符串第3 个单元开始依次存 放 有输入AL=FFH, 无输入AL=0
键盘输入一个字符
9
屏幕显示字符串
10(0AH)
键盘输入同时屏幕显 示字符串
11(0BH)
检测有无键盘输入
下次实验内容
实验名称:
汇编语言程序设计实验(课堂测试)
实验内容:
根据后面提供的题目,由教师上课时随 机指定,当堂完成其中一个程序题目的编写、 编译、调试、运行等全过程。
汇编程序题
1、两个字节数(十六进制数)相减A-B送D,并以十六进制形式显 示结果。 2、两个十进制数相加,求其和,要求显示结果。(设两个加数及其 和均为位数相等的无符号数,且最多不超过5位) 3、将一个十进制正数(不超过4位数),转换成对应16进制数,显 示到屏幕上。 4、一个四位16进制数,按照二进制形式显示到屏幕上。 5、将一串十进制数字,分别用正序和反序显示到屏幕上。比如原始 序列为426135,其正序与之相同,反序就是531624. 6、将一串(2~10个)无序的十进制数字,按从小到大的顺序重新 排好后显示到屏幕上。 7、将一串不带符号的十进制数,求其最大值和最小值。
8086微机原理实验之两位十进制数相加

[0001]两位十进制数相加
1.实现控制台输入输出 2.实现两位十进制数相加(基本要求:输入两位十进制数和另一个两位十进制 的数相加并将表达式与结果输出
二.理论分析或算法分析
输入第一个两位十进制 的数,分别将十位和个 位放在 BH 和 BL 里面。
从控制台显示’+’后, 输入第一个两位十进制 的数,分别将十位和个 位放在 CH 和 CL 里面。
四.实验结果分析(含执行结果验证、输出显示信息、图形、调试过程中所遇的问题及处理方法等)
结论如上图
五.结论 本次实验完成了简单的两个两位十进制数相加。完成了表达式的输出,将实验跟理 论相结合,加深了对知识的理解。 报告提交日期
2
3
AAA Mov Bl,Al ADC BH,CH Mov AL,BH Mov AH,00H AAA Mov CH,AH Mov CL,Al ADD BL, 30H ADD CX, 3030H Mov DL, '=' Mov AH, 2 Int 21H Mov DL,CH Mov AH, 2 Int 21H Mov DL, CL Mov AH, 2 Int 21H Mov DL,BL Mov AH, 2 INT 21H
微机原理及应用姓名学号班级成绩设备名称及软件环境windowsxp操作系统emu8086仿真器实验名称0001两位十进制数相加实验日期一
计算机硬件实验室实验报告
课程名称:微机原理及应用 姓 名 学 号 班 级 成 绩
设备名称及软件环境 实验名称 一.实验内容
Windows XP 操作系统 emu8086 仿真器 实验日期
将这两个十进制对应相 加,最后将表达式与结果 在控制台上输出
1
ห้องสมุดไป่ตู้
加法程序

本科实验报告课程名称:微机原理及接口技术实验项目:加法程序实验地点:专业班级:学号:学生姓名:ALXB指导教师:年月日实验一、加法程序一.实验目的学习数据传送和算术加法指令的用法。
二、实验内容将两个多位十进制数28056,47193相加,并显示加数、被加数、和。
要求两个加数均以 A SILL码形式各自顺序存放在DATA1和DATA2内存单元中,结果送回DATA1中(高位在后,低位在前)三、流程图:四、试验程序SHOW MACRO BMOV DL,BMOV AH,02HINT 21HENDMDATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H DATA2 DB 36H,35H,30H,38H,32H DATA3 DB '_____',0DH,0AH,'$' DATA ENDSSTACK SEGMENT STACKSTA DB 20 DUP (?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUMESHOW 20HCALL DISPLMOV AX,4C00HINT 21HDISPL PROC NEARDS1: SHOW [SI+BX-1]DEC BXJNZ DS1RETDISPL ENDPADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05AD1: SUB BYTE PTR [SI+BX-1],30HCS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA2MOV BX,05SHOW 20HCALL DISPLSHOW 0DHSHOW 0AHMOV SI,OFFSET DATA1MOV BX,05SHOW 2BHCALL DISPLSHOW 0DHSHOW 0AHMOV CL,7S1: SHOW 2DHLOOP S1SHOW 0DHSUB BYTE PTR [DI+BX-1],30HDEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05CLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALINC SIINC DILOOP AD2MOV SI,DXMOV DI,BPMOV BX,05AD3: ADD BYTE PTR [SI+BX-1],30HADD BYTE PTR [DI+BX-1],30HSHOW 0AHMOV SI,OFFSET DATA1 MOV DI,OFFSET DATA2 CALL ADDAMOV SI,OFFSET DATA1 MOV BX,05DEC BXJNZ AD3RET ADDA ENDP CODE ENDSEND START五、实验结果六、思考题不改变数据段DATA1和DATA2的内容,如何将加数与被加数分别由28056和47193变成65082和39174,并且相加?答:源程序不变将DATA1 DB 33H,39H,31H,37H,34HDATA2 DB 36H,35H,30H,38H,32H后加上DATA4 DB 37H,34H,31H,39H,33HDATA5 DB 32H,38H,30H,35H,36H并将全部DATA1和DATA2全部改成DATA4和DATA5就可以实现。
微机原理实验

实验一:两个多位十进制数相加
本程序将两个多位十进制数相加, 其中加数与被加 数均以ASCII码形式存放在以DATA1和DATA2为首的5 个内存单元中(低位在前), 相加结果被送回DATA1 处。
程序中先要把加数与被加数由十进制ASCII码转化 为十六进制的数字串, 然后将它们进行带进位相加并 作AAA调整,最后将结果保存。 程序流程图见下页:
实验二:排序
本程序将数据区中的10个数由小到大排序,而且 排序后的数, 仍存放在该区域中。 程序采用冒泡法,设置了内、外两层循环, 其中 在第 i 次外循环中通过(10 - i)次内循环找出剩下 数中的最小数, 然后与当前数进行交换,从而完成 排序。 程序流程图见下页。
实验三
一、实验目的
RAM 实验
微机原理课程实验
实验一:两个多位十进制数相加 实验二:排序 实验三 RAM 实验
《微机原理》是一门对实际动手能力要求比较高 的学科。由于《微机原理》课程的实验种类繁多,但 课时有限,我们选择了比较具有代表性的几个实验。 该课程在硬件方面着重讨论了8086的体系结构、接口 技术 及其应用等。而这些硬件方面的内容如果能够结 合实际动手进行实验,将获得较佳的学习效果。
1、熟悉6116静态RAM的使用方法,掌握PC机外存扩充的手段。 2、了解PC机62芯总线信号的定义,领会总线及总线标准的意 义。 3、通过对硬件电路的分析,了解总线的工作时序。
二、实验内容 对指定地址的RAM进行数据读/写
1、将硬件电路连接好,如左图所示。 2、编制程序,将A--Z26个字符序列寸入A0000~A07FF单元, 再从中读出并显示在屏幕上。 3、使用DEBUG的F命令,填充6116RAM的A000:0000~07FF单元 全'A'字符,再填充A000:0800~0FFF单元全为'B'字符
微机原理实验二-两个多位十进制数相加

实验二两个多位十进制数相加一、要求:将两个多位十进制数(如四位)相加,要求被加数、加数以ASCII码形式按顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前)。
结果显示在屏幕上。
二、目的:1、学习数据传送和算术运算指令的用法。
2、熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序过程。
程序如下:DATA SEGMENTS1 DB '5','4','3','6','0'S2 DB '6','5','3','6','0'S3 DB '6345+6356=$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV DX,OFFSET S3MOV AH,9INT 21HCLC ;清进位CLDMOV SI,OFFSET S1MOV DI,OFFSET S2MOV CX,05HL1: LODSB ;本次被加数[SI]--〉ALADC AL,[DI] ;本次被加数(AL)+本次加数[DI]+上次进位, 结果--->ALAAA ;非组合BCD码调整,结果-->ALSTOSB ;本次相加结果(AL)-->[DI], DI+1-->DILOOP L1MOV AH,02HMOV CX,05HL2: MOV DL,[DI-1]OR DL,30H ;非组合BCD码-->ASICII码INT 21HDEC DILOOP L2MOV AH,4CHINT 21HCODE ENDSEND START调试结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一两个多位十进制数相加的实验一、实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。
二、实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。
三、程序框图图3-1四、参考程序清单DATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H;被加数DATA1END EQU $-1DATA2 DB 34H,35H,30H,38H,32H;加数DATA2END EQU $-1SUM DB 5 DUP(?)DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA1ENDMOV DI,OFFSET DATA2ENDCALL ADDAMOV AX,4C00HINT 21HADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05HAD1: SUB BYTE PTR [SI],30HSUB BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05HCLCAD2: M OV AL,[SI]MOV BL,[DI]ADC A L,BLAAAMOV [SI],ALDEC SIDEC DILOOP AD2MOV SI,DXMOV DI,BPMOV BX,05HAD3: ADD BYTE PTR [SI],30HADD BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START实验结果如图:结果分析:两个数相加后结果放在内存中DS:0000处,且结果应给为84256,实验结果与理论分析一致。
实验二排序实验一、实验目的掌握用汇编语言编写排序程序的思路和方法。
二、实验内容将指定内存出开始的数据(最多为4位数)按从大到小的顺序排列。
第一个数字表示数据的个数(不是要比较的数值!!!)。
三、程序流程图图3-2四、程序清单DATA SEGMENTADDR DW 8,234,35,67,876,54,39,765,237 DATA ENDSSTACK SEGMENTSTA DW 32 DUP(?)TOP DW ?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXMOV SP,TOPMOV CX,WORD PTR ADDR[0]DEC CXLOOP1: MOV DI,CXMOV BX,2LOOP2: MOV AX,WORD PTR ADDR[BX]CMP AX,WORD PTR ADDR[BX+2]JGE CCCXCHG AX,WORD PTR ADDR[BX+2]MOV WORD PTR ADDR[BX],AXCCC: ADD BX,2LOOP LOOP2MOV CX,DILOOP LOOP1EXIT: MOV AX,4C00HINT 21HCODE ENDSEND START实验结果如图:结果分析:此程序实现的是八个数据的排序,用了一个循环,首先第一个数与第二个数相比较,然后第三个数再与第一第二个数分别比较,依次类推,最终得到如图所示结果。
实验三自编程序上机调试一、实验目的掌握用汇编语言编写排序程序的思路和方法。
二、实验内容data segmentx dw 600y dw 25z dw -2000s dw ?data endscode segment assume ds:data,cs:code start:mov ax,datamov ds,axmov ax,xmov bx,ymul bxmov bx,59D8Hadd ax,zsub bx,axmov ax,bxmov bx,zidiv bxmov s,axmov ah,4cHint 21Hcode endsend start实验结果如图:结果分析结果应该为-5,即FFFGB。
实验四 8255并行I/O口实验一、实验要求利用8255可编程并行口芯片,实现输入/输出实验,实验中用8255PA口作输入,PB口作输出。
二、实验目的1、了解8255芯片结构及编程方法。
2、了解8255输入/输出实验方法。
三、预备知识8255是Intel公司生产的与Intel8080/8085系列的MPU配套的可编程外围接口电路,简称PPI。
它有A、B、C三个八位端口寄存器,通过24位端口线与外部设备相连,基中C口可分为上半部和下半部。
这24根端口线全部为双向三态。
三个端口可分二组来使用,可分别工作于三种不同的工作方式。
四、实验原理图及连线1、本实验主要用到的模块:8255模块、开关量输出模块、0-1指示模块、实验译码单元等;2、PA0-PA7分别接开关量输出模块S0-S7对应的插座;3、PB0-PB7分别接0-1指示模块DO71-DO78对应的插座;4、8255A的片选/CS接地址译码单元的2A0-2A7;5、数据线XD0—XD7接系统数据线区的任一插座。
图3-3五、实验内容将实验的线路连接好后,编程,将8255的A口作为输入,输入信号由8个逻辑电平开关提供,B口作为输出,其内容由发光二极管来显示。
六、程序框图见图3-4。
图3-4七、实验步骤1、参照图中的内容连好线;2、运行上位机软件,装载并运行相应程序即可(联机请参考程序8255.asm)。
注意:同学们自己编写程序时,8255的/CS连线可以接地址译码单元的其他信号,其它连线相同。
如果用的端口与本实验不一样,也可以改变IO口的连线。
八、仪器配置ZY15MicInt12BB微机原理及接口实验箱一台。
九、实验程序:L8255_CMD EQU 2A3HL8255_PA EQU 2A0HL8255_PB EQU 2A1HL8255_PC EQU 2A2HCODE SEGMENTASSUME CS:CODE,DS:CODEBEGIN:MOV CX,0FFHAA: LOOP AAMOV DX,L8255_CMDMOV AL,9CH ;10011000OUT DX,ALNOPNOPNOPNOPNOPBB:MOV DX,L8255_PAIN AL,DXXOR AL,0FFHMOV DX,L8255_PB OUT DX,AL JMP BBCODE ENDSEND BEGIN 九、实验现象A 口的8个开关能控制其所对应的8个逻辑灯的亮和灭。
结果分析:通过对8255控制端口的方式设定,实现通过从A 口输入高低点电平控制与B 相连接的逻辑灯的亮与灭,当某个开关处于高电平时,对应的逻辑灯就会亮。
十、实验总结通过这次实验我知道了8255并行I/O 端口控制程序的写法,也了解了其控制过程。
实验五 8259A 中断实验一、实验要求掌握用8088/86控制8259可编程中断控制器,实现对外部中断的响应和处理。
二、实验目的了解8088/86与8259之间的连接方法。
学习8088/86对8259的控制方法。
三、预备知识8259A 是Intel 公司专为控制优先级中断而设计的NMOS 芯片。
它集中断源优先级排队、中断源识别、中断向量提供和中断屏蔽等功能电路于一体,因而中断系统无需附任何电路,只需对8259A 进行编程,就可管理8级优先中断,且中断请求方式和优先级模式等中断结构可通过编程设定或变更,中断入口地址也可由用户任意指定。
四、实验原理说明及连线1、本实验主要用到的模块:中断模块、单次脉冲源模块等;2、IR6接单次脉冲的/Q 端。
D011IR018D110IR119D29IR220D38IR321D47IR422D56IR523D65IR624D74IR725INT 17INTA 26SP/EN16CS 1RD 3CAS012WR 2CAS113A027CAS215U028259IRQ4D0D1D2D3D4D5D6D7IRQ1INTR INTA IIOW IIOR A020H R025KVCCIRQ0IRQ3IRQ2J06IR5J07IR6J08IR7图 3-5五、实验内容用单脉冲发生器的输出脉冲作为中断源,每按一次按键产生一次中断申请,中断服务程序将在实验箱的显示屏显示一个字符“R”。
1、确认连接好线路;2、装载并运行程序(联机时请参考程序8259.asm)。
八、仪器配置ZY15MicInt12BB微机原理及接口实验箱一台。
九、实验程序:UCODE SEGMENTASSUME CS:UCODEBEGIN:JMP BEGIN_INT_SEG DW ?INT_OFF DW ?BEGIN_:CLIMOV AH,35HMOV AL,0EHINT 21HMOV INT_OFF,BXMOV INT_SEG,ESMOV AX,CSADD AX,10HMOV DS,AXMOV AH,25HMOV AL,0EHMOV DX,OFFSET UINTRINT 21HIN AL,21HAND AL,0BFHMOV DX,21HOUT DX,ALSTIJMP $UINTR PROC FARCLIMOV DX,88HMOV AL,'R'OUT DX,ALMOV AL,20HOUT 20H,ALIRETUINTR ENDPUCODE ENDSEND BEGIN实验结果分析:调用通过中断程序35H和25H功能显示程序中所设定的字符R。
十、实验现象当中断发生时,及给一个有效点评脉冲时,实验箱屏幕将会显示字符R。
实验六ADC0809A/D转换实验一、实验目的1、加深理解逐次逼近法模数转换器的特征和工作原理;2、掌握A/D转换芯片与8088/86的接口方法;3、了解A/D芯片ADC0809转换性能及编程方法。
二、预备知识A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好;价格便宜,但速度慢;二是逐次逼近A/D转换器,精度,速度,价格适中;三是并行A/D转换器,速度快,价格也昂贵。
实验用的ADC0809属第二类,是八位A/D转换器。