微机原理与接口技术实验三 多字节加法

电子信息专业实验报告
课程微机原理与接口技术实验
实验题目多字节十进制加法
学生姓名lz评分
学号20171414xxxxx班级xxxxxxxx
同实验者
实验时间2019.10.19上午地点望江实验室基教B520电子信息学院专业实验中心
一、实验目的
1、掌握循环程序的设计;
2、标志位判断;
3、带进位的加法指令及其十进制调整指令的使用方法。

二、实验内容(含技术指标)
1、设计多字节十进制加法程序;
2、将被加数、加数、和、进位分别放在1000H开始的单元;
3、在debug初始化要用的寄存器;
4、通过循环程序完成取加数、被加数、十进制调整和修改指针的操作;
5、处理进位,输出结果,观察IP、SI、CL和十进制调整前后AL、A、C的变化;
6、连续执行,检查并验证结果是否正确。

三、实验仪器(仪器名称、型号,元器件名称、清单,软件名称、版本等)
1、联想笔记本电脑Windows10系统
2、Masm for Windows集成实验环境2015
四、实验原理(基本原理,主要公式,参数计算,实现方法及框图,相关电路等)
1、ADC:带进位的加法指令,ADC指令在格式和功能上都与ADD指令类似,只是相加时要把进位标志CF的当前值加到和中,结果送到目的操作数中。

2、DAA:十进制数加调整指令,用于调整AL的值,该值是由指令ADD或ADC运算二个压缩型BCD
码所得到的结果。

压缩型BCD码是一个字节存放二个BCD码,低四位和高四位都是一个BCD码。

其调整规则:如果AL的低四位大于9,或AF=1则AL=AL+6,置AF=1;如果AL的高四位大于9,或CF=1则AL=AL+60H,置CF=1;如果以上两点都不成立则清除标志位AF和CF。

3、标志位的含义:AF:半加标志位。

在加法时,当位3需要向位4进位,或者在减法时位3需向位4借位时,该标志位置1;否则清0。

该标志位通常用于对BCD运算结果的调整。

CF:进位标志位。

作加法时出现进位或者作减法时出现借位,该标志位置1;否则清0。

4、—U检查程序;—R检查、设置所需寄存器;—E设置内存单元;—T单步执行;G=起始地址停止地址:分段执行;G停止地址(断点地址)--从当前IP开始执行;G=起始地址,直到程序结束。

5、程序流程图:
2
3
(经实验指导老师签字认可的原始数据记录纸或添加页粘贴处)
五、实验步骤(实验关键操作步骤,仪器、电路及器件选择使用,原程序及关键指令注释等)
1、按照要求编写程序:CODES SEGMENT ASSUME CS:CODES DEC CL START:
JNZ L1
;判断CL 是否为0
XOR AX,AX ;标志位清0MOV SI,1009H MOV CL,3
MOV AL,0MOV SI,1000H ADC AL,0L1:MOV AL,[SI]
MOV [SI],AL MOV BL,[SI+3]INT 3H ADC AL,BL ;带进位加法CODES ENDS DAA ;十进制调整END START
MOV [SI+6],AL
INC SI
4、执行程序并对程序进行调试:以十进制调整指令为断点,分段执行程序,检查记录寄存器IP 、CL 以及SI ;T 单步执行,检查记录AL 和标志位AF 、CF ;重复3次循环,检查中间结果。

5、G 将程序执行完;检查最后结果:
D 10001010。

6、数据处理,记录到原始数据单。

六、实验数据(测量数据波形曲线或数据列表,标明单位)
D 1000:10001122339911991034
320100。

合集下载

微机原理实验:加减法

微机原理实验:加减法
mov cx, 8 ; 循环次数
print: mov ah, 2
mov dl, '0'
test bl, 10000000b
jz zero
mov dl, '1'
zero: int 21h
shl bl, 1
loop print
; 设置背景及字体颜色
mov cx, 9 ; 字符数量
mov di, 01h ; 起始地址
jz zero_2
mov dl, '1'
zero_2: int 21h
shl bh, 1
loop print_2
; 设置背景及字体颜色来自mov cx, 9 ; 字符数量
mov di, 01h ; 起始地址
color_2: mov [di], 11100000b ;黄底(1110) ,黑字(0000)
add di, 2
color: mov [di], 11110001b ;白底(1111) ,蓝字(0001)
add di, 2
loop color
mov dl, 'b'
mov ah, 2
int 21h
mov ax, 4c00h
int 21h
(二)减法部分
name "add-sub"
org 100h
; set segment register
mov ax, 0b800h
mov ds, ax
; 8 + 10 = 18 (decimal) or bin=00010010b
mov al, 8
mov bl, 10
add bl, al
mov bh, bl ;保存加法结果

微机原理及接口技术实验多字节加减法

微机原理及接口技术实验多字节加减法

INC SI
•
DEC CL
JNZ LP1 JNC LP2 MOV AL,1 MOV [SI+6],AL JMP LP3 LP2: MOV AL,0 MOV [SI+6],AL LP3: INT 3
第10页/共11页
感谢您的观看!
第11页/共11页
第6页/共11页
编程提示
CL=0
• 标志位清0
• CL3
• SI 1000H
• AL [SI]
• BL [SI+3]
• AL AL+BL(带进位加)
• 十进制调整 • [SI+6] AL
设断点
• SI SI+1
第7页/共11页
判断有无进位 有进位 在进位单元置1 无进位 在进位单元置0
(分支程序)
三字节无符号十进制数加法
• 关键点 • 进位标志 • 十进制调整 • 分支程序
第2页/共11页
数据存放位置
1000H
11
1001H
22
1002H
33
1003H991004H111005H
99
1006H
1007H
1008H
1009H
100AH
第3页/共11页
被加数 加数
和 进位
第一个字节相加
进位 11
+
99
= 无 AA
DAA 调整
进位 11
+
99
= 有 10
第4页/共11页
第二个字节相加
进位 22
ADD
11
= 未带 33
执行后C标 志不变
进位 22
ADC
11

多字节十进制加法

多字节十进制加法
1006← 00 CF←0
SI←1002 CX←3
AL← [SI] BL← [SI+3] AL←AL+BL+CF 十进制调整 [SI+7] ← AL
SI←SI-1
计数完成 [SI]←[SI]+00+CF
结束
• CODE SEGMENT
• ASSUME CS:CODE
•
ORG 0100H
• START:
• …………………………………
• CODE • END
ENDS START
程序调试及执行要求
• E命令修ห้องสมุดไป่ตู้3000:1000~3000:1005 • R命令修改DS=3000H • 以十进制调整指令(DAA )为断点,分段执行程序 • 检查寄存器 • G 断点地址
• T 单步执行(调整) • 检查AL和标志位 • 重复3次循环,检查中间结果 • G 将程序执行完 • 检查最后结果 D 1000 1010
实验三 多字节十进制加法
实验目的
• 掌握循环程序的设计 • 掌握标志位判断 • 带进位的加/减指令 • 十进制调整指令
实验内容
• 编程完成3字节10进制加法 • 程序放在0100H开始的单元 • 加数被加数和放在存储器中格式如下
最低一个字节相加
• CF初始为0
第二个字节相加
调整效果
程序流程图
[si+7],al si next byte ptr[si+7],00h 3 ends start
• code
• assume
• start:
•
mov
•
clc
•
mov
•
mov

微机原理与接口技术实验报告

微机原理与接口技术实验报告

微机原理与接口技术实验报告
本次实验是关于微机原理与接口技术的实验报告,通过本次实验,我们将深入
了解微机原理与接口技术的相关知识,并通过实际操作来加深对这些知识的理解和掌握。

实验一,微机原理。

在本次实验中,我们首先学习了微机的基本原理,包括微机的组成结构、工作
原理和基本功能。

通过实际操作,我们了解了微机的主要组成部分,如中央处理器(CPU)、内存、输入输出设备等,并学习了它们之间的工作原理和相互配合关系。

同时,我们还学习了微机的基本指令系统和数据传输方式,加深了对微机工作原理的理解。

实验二,接口技术。

在接口技术的实验中,我们学习了微机与外部设备之间的接口技术,包括并行
接口、串行接口和通用接口等。

我们通过实际操作,了解了这些接口技术的工作原理和应用场景,学会了如何通过接口技术实现微机与外部设备的数据交换和通信。

实验三,实验综合。

在本次实验的最后,我们进行了一个综合实验,通过实际操作来综合运用微机
原理和接口技术的知识,实现一个具体的功能。

通过这个实验,我们加深了对微机原理与接口技术的理解,掌握了如何将理论知识应用到实际操作中。

总结。

通过本次实验,我们深入学习了微机原理与接口技术的相关知识,并通过实际
操作加深了对这些知识的理解和掌握。

微机原理与接口技术作为计算机科学与技术的基础知识,对我们今后的学习和工作都具有重要意义。

希望通过这次实验,能够对大家的学习和工作有所帮助,并为今后的学习打下坚实的基础。

以上就是本次实验的实验报告,希望对大家有所帮助。

感谢大家的阅读!。

微机原理与接口技术--实验一 认识实验及多字节加减法程序

微机原理与接口技术--实验一 认识实验及多字节加减法程序

北京XXX大学实验报告课程(项目)名称:微机原理与接口技术学院:专业:姓名:学号:指导教师:成绩:2013年12 月15 日实验一认识实验及多字节加减法程序一、任务与目的1. 实验任务:(1) 熟悉和掌握MASM汇编程序及TD调试软件的使用;(2) 熟悉代码段、数据段、堆栈段的结构;(3) 掌握8086/8088汇编程序的结构;(4) 掌握多字节加减法程序的编写。

2. 实验目的:(1). 掌握8086/8088汇编程序及调试程序的基本使用方法;(2) 熟悉8086/8088汇编语言编写的基本结构;(3) 熟悉多字节加减算术运算的基本方法。

二、原理(条件)1.相关知识:(1) MASM汇编程序及TD调试软件的使用方法;(2) 8086/8088汇编程序结构及算术运算等相关指令。

2.实验条件:MASM汇编程序及TD调试软件。

三、内容步骤1.启动TD(Turbo Debugger)输入程序段,观察执行情况并分析结果:(1) MOV BL,08HMOV CL,BLMOV AX,03FFHMOV BX,AXMOV [0200H],BXMOV ES:[0300H],AX(2) MOV AX,0A268H MOV SI,9D1CH ADD AX,SIAX= 3f84h CF= 1 AF=1 ZF=0 PF= 1 OF= 1 SF= 0 ADD AL,30HAX= 3fb4h CF= 0 AF= 0 ZF= 0 PF=1 OF= 0SF= 1ADC AX,0FFFFHAX= 3fb3h CF=1 AF= 1 ZF= 0 PF=0 OF= 0 SF= 0(3) 输入程序段,分步运行:MOV AX,0102HMOV BX,0304HMOV CX,0506HMOV DX,0708HPUSH AXPUSH BXPUSH CXPUSH DXPOP DXPOP CXPOP BXPOP AX2.编写多字节加/减汇编程序,观察执行情况并分析结果:利用MASM宏汇编程序及TD程序进行调试。

微机原理实验2.

微机原理实验2.

.code
.startup
mov cx,09h ; 设循环次数
lop: mov ah,09h ;显示功能调用
lea dx,data1
int 21h
call near ptr delay ;调用延时子程序
dec data1+5
;修改显示数字
loop lop
.exit
主程序流程:
开始
CX 循环次数
字符串 显示功能调用
.586
.DATA
DATAS DW 1111H,2222H,3333H,4444H,5555H
DW 6666H,7777H,8888H,9999H,0AAAAH
RESULT DD 1 DUP(?)
.CODE
.STARTUP
MOV SI,OFFSET DATA1 ;设指针
MOV CX,10
;累加次数
MOV EAX,0
;清累加器
;清进位
LOP: MOV BX,[SI]
;取加数到BX
MOVZX EBX,BX 展成32位
;将BX扩
ADD EAX,EBX
;带进位加
INC SI
;改指针
INC SI
LOOP LOP
;循环加
MOV RESULT,EAX
;存结果
开始Βιβλιοθήκη SI <= DATAS的首址
CX <= 累加次数
累加器清零
清进位
➢ 使用方法: 1. 传送入口参数到指定的寄存器中; 2. 把要调用功能的功能号送入AH寄存器中; 3. 用INT 21H指令转入子程序入口; 4. 相应的子程序运行结束后,可以按照规定取得出口参数。
DOS功能调用

多字节加法多字节乘法

多字节无符号数加法实验报告
通信二班张晓宇 200800120295
一、实验目的
熟悉汇编中的加法指令。

二、实验内容
将被加数置入片内RAM 以40H 单元为起始地址的区间,将加数置入片内
RAM 以50H 单元为起始地址的区间。

置入时,多字节数按先低位后高位的次序存数,相加结果,放回30H 的存放单元。

三、流程图
否 有
开始
R0指向加数最低位地址40h
R1指向被加数最低位地址50h
R0与R1对应为相加将相
加结果放入R0中
R0加1,R1加1
所有位加完 最高位是否有进
位 否
是
向最高位进位
四、实验程序
org 0000h
ajmp main
org 0030h Main: mov r0,#40h mov r1,#50h mov r2,#4h
clr c
loop1:MOV A,@R0
ADDC A,@R1
MOV @r0,A
INC R0
INC R1
djnz r2,loop1 mov a,#00h
addc a,#00h mov @r0,a
mov r0,#40h mov r1,#30h mov r2,#10h loop2:mov a,@r0
mov @r1,a
inc r0
inc r1
djnz r2,loop2 Sjmp $
END 将40h地址数据移到30h地址中
结束。

内存操作数及寻址方法实验报告

内存操作数及寻址方法实验报告实验二内存操作数及寻址方法实验二内存操作数及寻址方法实验目的:通过实验掌握下列知识:1、DEBUG命令:G,N,W,L及Q。

2、8088系统中数据在内存中的存放方式和内存操作数的几种寻址方式。

3、8088指令:INC,DEC,LOOP,INT 3,INT 20H,寄存器SI,DI。

4、8088汇编语言伪操作:BYTE PTR,WORD PTR。

5、求累加和程序和多字节加减法程序。

实验内容和步骤:一、内存操作数及各种寻址方式使用:内容:MOV AX,1234MOV [1000],AXMOV BX,1002MOV BYTE PTR[BX],20MOV DL,39INC BXMOV [BX],DLDEC DLMOV SI,3MOV [BX+SI],DLMOV [BX+SI+1],DLMOV WORD PTR[BX+SI+2],2846步骤:1)用A命令键入上述程序,并用T命令逐条运行。

2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。

注意D命令显示结果中右边的ASCII字符及双字节数存放法。

思考:有关指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。

答:不行。

二、求累加和程序:程序:MOV BX,1000MOV CX,10SUB AX,AXLOP: ADD AL,[BX]ADCAH,0INC BXJ: LOOP LOPINT3步骤:1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。

-A 1002)用命令N AA将此程序命名为文件AA(文件名可任取)。

3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址)4)用命令W 100将此程序存到AA命名的磁盘文件中。

5)用命令Q退出DEBUG。

6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序。

微机原理与接口技术实验报告

微机原理与接口技术实验报告班级:电信学院自动化74姓名:学号:日期:2009.12.13第一题:试编制一个程序,用乘法指令实现32位二进制数与16位二进制数的相乘。

算法分析:由于8086的寄存器只能存放16位数字,所以需要将32位的数字分成2个16位的数字,然后分别相乘,最后将对应位放入相应的寄存器。

实验流程图为实验源程序为:DATAS SEGMENTM1 DW 0FFFFHM2 DW 0FFFFHN DW 2HSUM DW 3 DUP(0)DATAS ENDSSTACKS SEGMENTDW 256 DUP(?)STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV AX,M1MOV BX,NMUL BX ;与32位数的低16位相乘MOV SUM[2],DXMOV SUM[4],AXMOV AX,M2MUL BX ;与32位数的高16位相乘 CLCADD SUM[2],AXADC SUM,DXMOV AH,4CHINT 21HCODES ENDSEND START程序调试过程;调试环境为emu8086根据程序的运行进行单步分析,可以得出每条指令语句在寄存器和内存中的执行情况。

16位数与32位数的低16位相乘图示为16位数与32位数的高16位相乘图示为最后对数据进行分配,按位组合为此时即实现了2个数的相乘,结果存放在相应的寄存器中。

该程序主要是对寄存器的实验进行合理的分配,熟悉乘法运算指令及其结果。

第二题:试编制程序,计算出从2开始的前10个质数.算法原理:已知2为第一个质数,然后被除数从2依次递增,除数从2递增,将被除数依次除以比它自己小的数字,然后将余数与0比较,若等于0,则其不是质数,若被除数递增至本身,则该数位质数。

算法流程图为源程序代码为:DATA SEGMENTVAR DW1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 ,24,25,26,27,28,29,30RESULT DW 10 DUP(?)M DW 2DATA ENDSSTACK SEGMENTDW 256 DUP(?)TOP LABEL WORDSTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV SP,OFFSET TOPCALL QIUSHUMOV AH,4CHINT 21HQIUSHU PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXMOV BX,4MOV RESULT,2MOV SI,0AGAIN1:MOV DX,[M]MOV AX,[VAR+BX]AGAIN2:MOV AX,[VAR+BX]CMP DX,[VAR+BX-2] JG NEXT2DIV DLCMP AH,0JNE NEXT1INC BXINC BXJMP AGAIN1NEXT1:INC DXJMP AGAIN2NEXT2: INC SIINC SICMP SI,18JG DONEMOV DI,[VAR+BX]MOV [RESULT+SI],DIINC BXINC BXJMP AGAIN1POP DXPOP CXPOP DIPOP AXDONE: RETQIUSHU ENDPCODE ENDSEND START程序运行结果为:在程序单步调试过程中可以读取当前寄存器和内存的占用情况和所存的数据,最后得出前十个质数分别为第三题:编写一个通用多字节数相加的宏定义,并调用它实现多字节数的加法,注意观察汇编时宏调用被展开的情况算法分析:首先定义一个宏,实现某项功能,然后在主程序中调用该宏,即可在单步调试过程中观察到该宏的调用及展开过程。

微机原理与接口技术实验报告三

微机原理与接口技术实验报告(三)1、实验目的:1)学习程序中有限的寄存器的使用。

2)学习使用冒泡法排序3)学习程序流程控制:①条件跳转指令ja jb ②call指令,观察程序执行时堆栈的变化(学会用debug –g命令设置断点)4)学习利用编译错误信息进行程序修改,通过运行寻找并改正逻辑错误。

5)灵活运用各种dos功能调用实现显示功能6)学习将数字用转换成相应的ascii码并显示2、实验内容:多重循环程序设计:多重循环中,循环中包含另一个循环,每一循环都有各自的循环计数器和终点判断。

应注意:各重循环初始条件的控制;内循环可以嵌套在外循环中,也可以几个内循环并列在外循环中,但各层循环之间不能交叉,内循环可以跳到外循环中,不可以从外循环直接跳进内层循环;应用:冒泡排序法以Buffer为首地址保存一组(假设10个)无序的有符号数,编写排序程序使数由小到大重新排列。

程序框图如下:举例:(值1 2 3 4,数值越大气泡越大)原顺序:第一次交换第一次内循环结束(外循环1) 第二次内循环结束(外循环2)3、试验结果程序编写如下:dispmsg macro messgemov ah,9lea dx,messgeint 21hendm.model small.dataBuffer db 10,-30,52,2,42db 92,32,-36,31,63N equ $-bufferjieshu db '$'newlines db 0dh,0ahjieguo db ' the result is:',0dh,0ah jguo db 30 dup(?,?),'$'.stack 100.codemov ax,@datamov ds,axmov ax,@stackmov ss,axmov bx,offset buffermov cx,N-1lop1:mov dx,cxlop2:mov al,[bx]cmp al,[bx+1]jle bijiaoxiayigexchg al,[bx+1]mov [bx],aljixu:inc bxbijiaoxiayige:inc bxloop lop2mov cx,dxmov bx,offset bufferloop lop1xianshi: mov si,offset buffer mov di,offset jguoxiayige:mov al,[si]cmp al,'$'jz wanbimov ch,almov cl,4shr al,clcall dispmov al,chand al,0fhcall dispinc sijmp xiayigewanbi:dispmsg jieguo Mov ax,4c00HInt 21Hdisp proccmp al,0ahjs doneadd al,7done:add al,30h mov [di],alinc diretdisp endpEndend start该程序中,首先定义一个宏dispmsg,然后定义各段。

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