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

合集下载

微机原理实验:加减法

微机原理实验:加减法
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,然后定义各段。

微机原理实验报告——加法程序的设计

微机原理实验报告——加法程序的设计

本科实验报告课程名称:微机原理及接口技术实验项目:加法程序实验地点:微机原理实验室专业班级:信息1001 学号:2010001193 学生姓名:指导教师:任光龙2013年6 月5 日一、实验目的学习数据传送和算数运算指令的用法二、实验内容将两个多位十进制数28056,47193相加,并显示加数,被加数,和。

要求两个加数均以ASCⅡ码形式各自顺序存放在DATA1和DATA2内存单元中,结果送回DATA1处(低位在前,高位在后)。

三、程序流程图四、参考程序SHOW MACRO BMOV DL, BMOV AH, 02HINT 21HENDMDA TA SEGMENTDA TA1 DB 33H,39H,31H,37H,34HDA TA2 DB 36H,35H,30H,38H,32HDA TA3 DB'-',0DH,0AH,'$'DA TA ENDSSTACK SEGMENT STACKSTA 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 DATA2MOV BX,05SHOW 20HCALL DISPLSHOW 0DHSHOW 0AHMOV SI,OFFSET DATA1MOV BX,05SHOW 2BhCALL DISPLSHOW 0DHSHOW 0AHMOV CL,7S1: SHOW 2DHLOOP S1SHOW 0DHSHOW 0AHMOV SI,OFFSET DATA1MOV DI,OFFSET DA TA2CALL ADDAMOV SI,OFFSET DATA1MOV BX,05SHOW 20HCALL DISPLMOV AX,4C00HINT 21HDISPL PROC NEARDS1: SHOW [SI+BX-1]DEC BXJNZ DS1RETDISPL ENDPADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05ADI: SUB BYTE PTR [SI+BX-1],30H SUB BYTE PTR [DI+BX-1],30HDEC BXJNZ ADIMOV 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],30H ADD BYTE PTR [DI+BX-1],30HDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START六、实验结果七、思考题不改变数据段DATA1和DATA2的内容,如何将加数与被加数分别由28056和47193变成65082和39174,并且相加答:源程序不变将DATA1 DB 33H,39H,31H,37H,34HDATA2 DB 36H,35H,30H,38H,32H后加上DATA4 DB 34H,37H,31H,39H,33HDATA5 DB 32H,38H,30H,35H,36H并将全部DATA1和DATA2全部改成DATA4和DATA5就可以实现。

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

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

进位 22
ADD
11
= 未带 33
进位 22
ADC
11
=
已带 34
执行后C标 志不变
执行后C标 志改变
33
22 11
不带进位加 99
11
99
CC 33 AA
33
带进位加 99
1
32
22 11 11 99 34 10
编程提示
CL=0
标志位清0
CL3
SI 1000H
AL [SI] CL不为0
关键点 进位标志 十进制调整 分支程序
数据存放位置
1000H
11
1001H
22
1002H
33
1003H
99
1004H
11
1005H
99
1006H
1007H
1008H
1009H
100AH
被加数 加数
和 进位
第一个字节相加
进位 11
+
99
= 无 AA
DAA 调整
进位 11

+
99
= 有 10
第二个字节相加
XOR AX,AX
MOV CL,3
MOV SI,1000H
LP1: MOV AL,[SI]
MOV BL,[SI+3]
ADC AL,BL
DAA
MOV [SI+6],AL
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

微机原理及其接口实验报告--两个多字节数相加

微机原理及其接口实验报告--两个多字节数相加

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

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

二.实验内容将两个多字节数相加,要求加数和被加数分别存放在num1和num2为首的内存单元中。

结果送回num1处。

三.实验步骤1.生成可执行文件。

输入 SUM.ASM SUM.OBJ SUM.EXEedit MASM LINK DEBUG2.汇编源程序DATA SEGMENTNUM1 DB 1H,2H,3H,0NUM2 DB 4H,5H,6HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXCLCLEA BX,NUM1LEA SI,NUM2MOV CX,3LL:MOV AL,[SI]ADC [BX],ALINC BXINC SILOOP LLMOV AL,0ADC AL,0MOV [BX],ALMOV AH,4CHINT 21HCODE ENDSEND START3.在DEBUG下使用DEBUG命令调试程序。

-N SUM.EXE (指定sum.exe文件)-L (从磁盘读sum.exe)-U (反汇编)记录源程序的首地址为0BC6:0000,NUM1和NUM2的首地址分别为0BC5:0000, 0BC5:0004。

如图所示:-G=0BC6:0000 0BC6:001F (使用G命令执行程序)-D OBC5:0000 (显示内存单元的内容)四.心得体会在做实验之前,尽量把源程序看懂,结合书去看。

在实验进行时,对于一些数据作修改,进行调试能够更好的理解程序所执行的内容。

经过这次试验,自己对运用MASM软件进行简单的debug指令操作有了进一步的理解和认识。

三个数据相加的微机原理

三个数据相加的微机原理

三个数据相加的微机原理三个数据相加的微机原理是指在计算机处理器中,对三个数据进行相加运算的基本原理。

这个过程涉及到多个组件和步骤,包括数据寄存器、运算单元、算术逻辑单元(ALU)等。

下面我将详细介绍三个数据相加的微机原理。

首先,为了实现三个数据相加,必须要有存储这些数据的寄存器。

寄存器是计算机中用于存储和处理数据的重要组件。

在这个情况下,我们需要至少三个寄存器来存储三个待相加的数据。

这三个寄存器可以是通用寄存器,也可以是专门用于数据相加的累加器。

在实际的计算机中,这些寄存器通常是由高速的触发器实现的,可以快速读写数据。

其次,计算机的运算单元是完成数学运算的核心部件。

在三个数据相加的情况下,运算单元需要能够同时处理三个输入,并将其求和。

通常,计算机的运算单元由算术逻辑单元(ALU)和控制电路组成。

ALU是计算机中负责执行算术和逻辑运算的核心部件。

它可以接受多个输入,并根据指令对这些输入进行运算。

在这种情况下,ALU将三个输入数相加,并将结果输出。

除了运算单元,控制电路也是实现三个数据相加的关键组件。

控制电路负责指导计算机的不同部件进行协调工作,以实现期望的计算操作。

在三个数据相加的情况下,控制电路需要发出相加运算的指令,并确保输入数据正确地传递给运算单元进行计算。

为此,控制电路需要对输入数据进行读取和传输,并将运算结果传送到寄存器或其他存储单元。

当计算机接收到三个数据相加的指令时,控制电路将读取这三个数据并将其传输给运算单元。

运算单元会执行相应的计算操作,将三个输入数相加,并将结果传送给输出寄存器或其他存储单元。

整个过程涉及到数据的读取、传输、相加和存储,需要各个组件之间的紧密协作。

在实际应用中,三个数据相加的微机原理可以被广泛应用于各种计算任务。

例如,在图像处理中,可以将RGB颜色分量相加以获取合成颜色;在音频处理中,可以将音频信号的不同通道相加以生成立体声效果等。

此外,还可以通过增加更多的数据输入和扩展运算单元的功能来实现更复杂的计算。

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

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

实验三、多字节、多进制加减运算实验一、实验目的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”进行十进制调整,调整后产生进位。

微机原理与接口技术3-3

微机原理与接口技术3-3

(2) 根据CF标志, 判断两个无符号数的大小 (1) 根据ZF标志,判断两者是否相等;
若两者不相等,则可在比较指令之后利用其它标志位的状态来确 定两者的大小。 例: 比较AX,BX寄存器, 将大数 (AX) … CMP AX,BX JNC NEXT XCHG AX,BX NEXT:…… ; CF=0转NEXT
(2) 根据CF标志,判断两个无符号数的大小; (3) 用S、O标志,判断二个带符号数的大小。
结论:CF=0 ,(AX) > (BX);
CF=1, (AX) < (BX)
(3) 用SF、OF标志,判断二个带符号数的大小
例:比较54与24的大小
解: 54-24=54+(-24) [-24]补=11101000,[54]补=00110110 00110110 + 11101000 100011110 OF=0,SF=0,则被减数>减数,即54 >24
134C8A32H+00C6F040H=? 程序: MOV AX, 8A32H ADD AX, F040 ;低位字相加 结果送AX
LOOPER:
MOV BX, 134CH ADC BX, 00C6H ;执行带进位的高位字的加法, 结果送BX
3、INC (Increment by 1 )加 1 指令
操作数类型:可以是寄存器,存储器。不能是段寄存器。 格式: INC dest ;(B/W), (dest)←(dest)+1 dest : 寄存器、存储器。不能是段寄存器。 功能:对指定的目标操作数+1 操作数单元。 作) 用途:用于在循环程序中修改地址指针和循环次数。 INC WORD PTR [DI] ;存储器+1(字操作) 例: INC INC INC DL SI ; 8位寄存器+1 ;16位寄存器+1

微机原理与接口技术第三章试题及答案

微机原理与接口技术第三章试题及答案

第三章3-1选择题1、MOVX A,@DPTR指令中源操作数的寻址方式是(B)(A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址2.ORG 0003HLJMP 2000HORG 000BHLJMP 3000H 当CPU响应外部中断0后,PC的值是(B)(A)0003H (B)2000H (C)000BH (D)3000H3.执行PUSH ACC指令,MCS-51完成的操作是(A)(A)SP+1 SP (ACC)(SP)(B)(ACC)(SP)SP-1 SP(B)(C)SP-1 SP (ACC)(SP) (D)(ACC)(SP)SP+1 SP4、LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=(D)(C)2000H (B)2001H (C)2002H (D)2003H5、51执行完MOV A,#08H后,PSW的一位被置位(D)(A)(A)C (B)F0 (C)OV (D)P6、下面条指令将MCS-51的工作寄存器置成3区(B)(A)MOV PSW,#13H (B)MOV PSW,#18H(B)SETB PSW.4 CLR PSW.3 (d) SETB PSW.3 CLR PSW.47、执行MOVX A,DPTR指令时,MCS-51产生的控制信号是(C)(D)/PSEN (B)ALE (C)/RD (D)/WR8、MOV C,#00H的寻址方式是(A)(A)位寻址(B)直接寻址(C)立即寻址(D)寄存器寻址9、ORG 0000HAJMP 0040HORG 0040HMOV SP,#00H当执行完左边的程序后,PC的值是(C)(A)0040H (B)0041H (C)0042H (D)0043H10、对程序存储器的读操作,只能使用(D)(A)MOV指令(B)PUSH指令(C)MOVX指令(D)MOVC指令3-2判断题。

4.MCS-51的相对转移指令最大负跳距是127B。

认识实验及多字节加减法程序

认识实验及多字节加减法程序

实验一认识实验及多字节加减法程序一、任务与目的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,0A268HMOV SI,9D1CHADD AX,SIAX= 3F84 CF= 1 AF= 1 ZF= 0 PF= 1 OF= 1 SF= 0 ADD AL,30HAX= 3FB4 CF= 0 AF= 0 ZF= 0 PF= 1 OF= 0 SF= 1 ADC AX,0FFFFHAX= 3FB3 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程序进行调试。

(1)编写多字节加法汇编程序:B6XX4F7C341FH + 2457FD9A6813H=?其中XX为组号。

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

电子信息专业实验报告
课程微机原理与接口技术实验
实验题目多字节十进制加法
学生姓名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。

相关文档
最新文档