微机原理课设_加法练习程序

合集下载

微机原理实验:加减法

微机原理实验:加减法
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 ;保存加法结果

微机原理课设实现数据累加

微机原理课设实现数据累加

目录第1章总体设计方案 (2)1.1设计原理 (2)1.2设计思路 (2)1.3设计环境 (2)第2章详细设计方案 (4)2.1算法与程序的设计与实现 (4)2.2流程图的设计与实现 (6)第3章程序调试与结果测试 (7)3.1程序调试 (7)3.2程序测试及结果分析 (8)参考文献 (9)第1章总体设计方案1.1设计原理实现数据累加,计算1+2+............+99+100。

应用累加器和4个寄存器可以实现这个程序。

1.2设计思路每个运算步骤都要用到累加器A,需要一个寄存器存储100以控制循环,一个寄存器存储从1开始每次加1递增的累加数。

由于5050的十六进制是13BA,一个寄存器最大只能存放FF,所以需要用到两个计算器存放累加的结果。

在这里我用R0存储控制循环的数;用R1存放累加数,用R2和R3存放累加和,其中R2存放高位,R3存放低位。

1.3 设计环境实验所应用的设计环境:伟福COP2000型计算机组成原理实验仪、微机。

在COP2000试验仪上实现编程,所应用的编程语言为汇编语言。

在伟福试验仪中有相关的模型机指令集分为几大类:算术运算指令、逻辑运算指令、移位指令、数据传输指令、跳转指令、中断返回指令、输入输出指令。

本程序所用到的相应的指令集(1)算术逻辑运算指令ADD A,R?-------------将寄存器R?的值加入累加器A中ADD A,#II---------- 立即数#II加入累加器A中ADDC A,R?----------将寄存器R?的值加入累加器A中,考虑进位SUB A,#II-----------从累加器中减去立即数后加入累加器A中(2)数据传送指令MOV A,R?------------将寄存器R?的值送到累加器A中MOV R?,A------------将累加器A中的值送到寄存器A中MOV R?,#II----------将立即数II送到寄存器R?中(4)跳转指令JC MM---------------若进位标志置1,跳转到MM地址JZ MM---------------若零标志位置1,跳转到MM地址JMP MM---------------跳转到MM此为COP2000计算机组成原理实验软件截图:图 1.1 COP2000计算机组成原理集成调试软件第2章详细设计方案2.1 算法与程序的设计与实现在微指令编程中,JMP很像高级语言中的goto语句,JZ很想高级语言中的if 语句。

微机原理加法器课程设计2

微机原理加法器课程设计2

1 设计任务描述1.1设计题目:加法器设计11.2 设计要求1.2.1设计目的通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。

通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。

为以后学生结合专业从事微机应用设计奠定基础。

1.2.2 设计的原始资料及依据查阅可编程并行芯片8255、键盘工作原理等其他相关资料。

用简单的输入输出端口等硬件,输入数据、处理数据和输出数据。

1.2.3 设计的主要内容及要求内容:利用微机原理实验箱,进行数据处理。

要求:1)从键盘输入两个二/四位BCD数,求其和,保存到内存。

2)用LED指示灯显示结果。

1.2.4 设计发挥1)延时。

2)显示百位进位。

2设计思路1.首先定义数据段和堆栈段。

2.其次对8255进行初始化,使8255工作在方式0,即基本输入输出方式;并且设置8255的A端口和B端口为输出状态,C端口为输入状态。

3.设计键盘扫描子程序,首先键盘清零,然后根据行扫描法确定哪一按键被按下,即分别确定输入的两个二位BCD数。

4.设计延时子程序,使输入的数据及计算结果有一段停留时间。

5.设计主程序,分别调用键盘扫描子程序和延时子程序,以输入两个二位BCD加数,在CPU中计算求和,再经8255输出到LED显示器,用九盏灯显示结果,第一盏由8255的A端口高四位输出,表示十位向百位的进位,即只能进行一百以内的加法,接下来的八盏由8255的B端口输出,前四位为BCD码显示的十位,最后四位显示个位。

6.程序结束,清屏返回。

3设计原理流程图3.1 8255与键盘接口程序流程图图(3.1)主程序3.2 键盘扫描子程序图(3.2)键盘扫描子程序4 硬件接线图图(4.1)硬件接线图设置8255的工作方式为0,即基本输入输出方式,并将键盘中的各行X1-X4分别与A口的PA0-PA3相连,A口为输出;将各列Y1-Y4分别与C口的PC0-PC3相连,C口为输入。

微机实验-2(多精度十进制加法程序设计)

微机实验-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

微机原理与接口技术课程设计报告加减计数器完整版

微机原理与接口技术课程设计报告加减计数器完整版

目录1课程设计题目 (1)2. 课程设计任务及要求 (1)3. 总体方案与设计说明 (1)4. 硬件电路设计及描述 (3)5. 软件设计流程及描述 (6)6. 源程序代码 (8)7. 系统调试 (12)&结论与说明 (13)9 .课程设计体会 (13)10.参考文献 (13)一.课程设计题目加减计数器设计二.课程设计任务及要求通过键盘输入0到9之间的数字,可以在LED灯上显示出来;通过键盘进行简单的9之内的加减运算;运算过程和结果在LED灯上显示出来。

三.总体方案与设计说明3.1通过小键盘做加减运算。

七段数码管显示器作输入数据和结果数据的显示。

3.2数字用小键盘0~9, R, P, M G作功能键R 开始运算(包括撤销运算),显示‘ 0'P+m-g=E 退出返回dos3.3运算顺序:a. 输入一原始数据显示器跟随显示b. 按+或-显示器内容不变c. 再输入一数据,显示器跟随显示。

d. 按=显示器显示结果数据,当超出能显示的最大值,显示 F (溢出)e. 按R重新开始运算f. 按E,结束退出LED 显示器上。

设计思路:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序实现2位十 进制数以内的及减法运算。

运算完成后将运算的结果储存并显示到 四.硬件电路设计及描述(含所需器件、硬件原理图)4.1 硬件电路键盘输入及LED 数码管通过8255A 接口与系统总线连接,键盘的16个按键组成8*2矩 阵,其中8根矩阵线作为8255A 的输出线与PB& PBO 连接,2根矩阵线作为8255A 的输入 线与PC7 PC6连接。

键盘采用逐次扫描原理,16个按键中0〜9座位数字健,+、-、=作为 加、减和等号功能键,C 为清零键。

4.2 键盘输入模块键盘是常用信息输入元件, 其实键盘也是由一个个按钮组成, 如果是独立按钮的话必须 要需要一个 I/O 口对它进行检测, 而键盘往往这需要键盘按钮数一半的 I/O 口数对它进行检 测,也许对一个比较简单的系统 I/O 口数一般不是问题,但对于一个大型、复杂的系统来说 I/O 资源就显得非常珍贵了,尽量减少 I/O 使用是非常利于降低成本,另外一方面键盘比用 独立按键要美观。

微机原理实验之两位十进制数相加

微机原理实验之两位十进制数相加

计算机硬件实验室实验报告课程名称:微机原理及应用
三.实现方法(含实现思路、程序流程图、实验电路图和源程序列表等)
源代码:
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。

微机原理-加法计算器设计及显示

微机原理-加法计算器设计及显示

微机原理-加法计算器设计及显示实验报告指导老微机原理实验课程名称:成绩:师:实验类实验名称:加法计算器及显示同组学生姓名:型:二、实验内一、实验目的和要求(必填)容和原理(必填)四、操作方法三、主要仪器设备(必填)和实验步骤装六、实验结果五、实验数据记录和处理线与分析(必填)订七、讨论、心得实验目的和要求一、1.掌握基于状态机的编程方法2.实现数字运算、键盘输入、LED显示的多任务协调编程3.P二、实验内容和原理1.编写程序,输入两个两位十进制数并显示,按确认键后显示运算结果2.基本功能:能够输入输入数字(非数字无效)并显示结果3.附加功能:光标指示功能(通过LED闪烁实现)以及退格功能装线订三、程序代码ORG 0000HSTART: MOV 78H,#0 ;初始化:78H放0的段码,其余放熄灭码.4P.MOV 79H,#10MOV 7AH,#10MOV 7BH,#10MOV 7CH,#10MOV R5,#0 ;R5是按键次数,初始置0MOV R6,#0 ;将0置入R6中MOV R7,#0 ;将0置入R7中MOV 30H,#0 ;30H是功能键存放单元,置为0MOV 31H,#0 ;31H单元初始置为0 装0 ;40H单元初始置为 MOV40H,#0 线0 ;41H单元初始置为MOV 41H,#0 订 ;调用显示子程序LOOP: LCALL DIR;调用键盘检测程序KEY LCALL 1 按键次数加 ; INC R5S2 键,跳到不是?S1: CJNEA,#10,S2 ;FUN 键,跳到 ;是?LJMP FUNS3 ?S2: CJNE A,#11,S3 ;不是键,跳到FUN 键,跳到是? LJMPFUN ;S4 键,跳到; S3: CJNE A,#12,S4 不是?FUN 键,跳到?; LJMP FUN 是S5键,跳到屜尯不是; S4: CJNE A,#13,S55 P.FUN 屜尯键,跳到 ; 是LJMP FUN S6 ?键,跳到 ; 不是S5: CJNE A,#14,S6 FUN 键,跳到;是? LJMP FUNN1 键,跳到; 不是?屌S6: CJNEA,#15,N1START 键,跳到; 是?屌LJMP START N2,跳到若按键次数不等于1 N1: CJNER5,#1,N2 ;D11跳到 ; LJMP D11,跳到2R5,#2,START;若按键次数不等于N2: CJNE 装START线T1 跳到 ; LJMP T1 订R4D11: MOV R4,A ;将A写入 ;输入值送显示个位缓存MOV 78H,A单元10送到79H MOV 79H,#10 ;将 ;跳转到循环LJMP LOOP53H 写入;T1: MOV 53H,A 将AB;将10置入 MOV B,#10A R4写进将上一次输入的 MOVA,R4 ;10乘以 ;A MUL AB相加A里面的值与;53H ADDA,53H6P.MOV R4,A ;将新的值置入到R4 MOV 79H,78H ;个位到十位MOV 78H,53H ;新数为个位LJMP LOOP ;跳转到循环FUN:MOV 78H,#10 ;将10置入到78H MOV 79H,#10 ;将10置入到79H MOV R0,30H ;与上次功能键交换MOV 30H,AMOV A,R0装 ;判断功能键 CJNE A,#10,FUN1线尻+ LJMP ADDY 订CJNEA,#11,FUN2 FUN1:-尻LJMP SUBTCJNE A,#12,FUN3 FUN2:;* LJMP MULTCJNE A,#13,FUN4 FUN3:;\/LJMP DIVIA=#0 ;首次按功能键,即FUN4: CJNE A,#14,FUN5;=LJMP EQUA保存第一个数 ; FUN5: MOV40H,R4按键次数清零; MOV R5,#07.PLJMP BCD ;将其拆为BCD码,以便后来将其显示OF: LJMP START ;跳转回开始ADDY: MOV A,40H ;加法,第一个数送累加器ADD A,R4 ;第一个数加第二个数MOV 40H,A ;存本次结果MOV R5,#0 ;按键次数清零LJMP BCD ;跳转到BCD程序SUBT: MOV A,40H ;减法,第一个数送累加器装借位清零 ; CLR C 线带借位的减法,第一个数减第;SUBB A,R4 订二个数BCD2 1,跳转到 ;借位为JBCY,BCD240H 将减的结果送 ;MOV 40H,A ;按键次数清零 MOV R5,#0BCD跳转到; LJMP BCD乘法,第一个数送累加器 ;MULT: MOVA,40HB送 ;将A MOV B,A将第二个数送累加器 ; MOV A,R4;第一个数乘以第二个数 MUL AB按键次数清零; MOV R5,#0 8.PJB OV,BCD1 ;若乘法结果溢出,则跳转到BCD1MOV 40H,A ;将A送40H LJMP BCD ;跳转到BCD DIVI: MOV A,R4 ;除法,第二个数送累加器MOV B,A ;将第二个数送BMOV A,40H ;将第一个数送ADIV AB ;A除以BJB OV,OF ;当B为0时跳到OF 装40H 送将A ;MOV 40H,A线 ;按键次数清零MOV R5,#0订BCD ; 跳转到 LJMP BCD按键次数清零EQUA: MOVR5,#0 ;31H ;将A送 MOV 31H,A BCD 跳转到 ; LJMP BCD乘法溢出时的处理程序;---- 乘法溢出时的处理程序 ; BCD1:78H 位送;将高8 MOV 78H, B79H;将低位送8 MOV 79H, A中79H、78H调用子程序把; LCALLHEX2BCD9.P的数字,转换成BCD码,送到7AH 7BH 7CHMOV A, 7CH ;下面,把万千百十个位,分别存入7CH 7BH 7AH 79H 78H MOV B, #16DIV AB ;除以16,目的是分离出高、低四位 ;存放十位MOV 79H, A存放个位 MOV 78H, B ;7AHMOV A, 装 ;存放万位 MOV 7CH, A 线7BH MOV A, 订#16 MOV B,DIV ABMOV 7BH, AMOV 7AH, BLJMP LOOP79H78H:; HEX2BCD: 子程序把、中的码,送到BCD数字,转换成7AH 7BH 7CHCLR A先清零; MOV 7AH, A10.PMOV 7BH, AMOV 7CH, AMOV R6, #16 ;共转换十六位数LOOPP:CLR CMOV A, 79H ;从待转换数的高端移出一Cy 位到RLC AMOV 79H, A 装78H MOV A, 线RLC A 订MOV 78H, ABCD送到码的低端 ; MOV A, 7CHADDC A, 7CH ; 带进位加。

微机原理与接口技术:加法减法运算指令

微机原理与接口技术:加法减法运算指令

1. 加法运算指令和调正指令ADD,ADC,INC,AAA,DAA(1)不带进位的加法运算指令ADDADD指令完成两个操作数相加,并将结果保存在目的操作数中。

指令格式:ADD OPRD1, OPRD2功能:操作数OPRD1与OPRD2相加,结果保存在OPRD1中。

说明:操作数OPRD1可以是累加器AL或AX,也可以是其它通用寄存器或存储器操作数,OPRD2可以是累加器、其它通用寄存器或存储器操作数,还可以是立即数。

OPRD1和OPRD2不能同时为存储器操作数,不能为段寄存器。

ADD指令的执行对全部6个状态标志位产生影响。

例如:ADD AL, BL ;AL+BL结果存回AL中。

ADD AX, SI ;AX+SI结果存回AX中。

ADD BX, 3DFH ;BX+03DFH结果存回BX中。

ADD DX, DA TA[BP+SI] ;DX与内存单元相加,结果存回DX中。

ADD BYTE PTR[DI], 30H ;内存单元与30H相加,结果存回内存单元中。

ADD [BX], AX ;内存单元[BX]与AX相加,结果存回[BX]中。

ADD [BX+SI], AL ;内存单元与AL相加,结果存回内存单元中。

【例题3-3】求D9H与6EH的和,并注明受影响的标志位状态。

MOV AL, 0D9HMOV BL, 6EHADD AL, BL结果AL=47H,标志位CF=1,PF=1,AF=1,ZF=0,SF=0,OF=0(2)带进位的加法运算指令ADCADC指令完成两个操作数相加之后,再加上Flags的进位标志CF。

CF的值可能为1或0。

指令格式:ADD OPRD1, OPRD2功能:操作数OPRD1与OPRD2相加后,再加上CF的值,结果保存在OPRD1中。

说明:对操作数的要求与ADD指令一样。

例如:ADC AL, BLADC AX, BXADC [DI], 30HADC指令主要用于多字节数的加法运算,以保证低位向高位的进位被正确接收。

微机原理课程设计-四则运算

微机原理课程设计-四则运算

《微机原理与接口技术》课程设计电气与自动化工程系 通信工程2010年12月23院 系: 专 业: 年级班级: 学 号: 姓 名: 指导教师: 设计日期:微机原理与汇编语言课程设计一、课程设计目的进行程序设计的方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,打到独立编制和调试一定滚魔的汇编语言程序水平。

二、课程设计题目四则混合运算要求从键盘上输入数字参与运算,并在屏幕上显示结果,至少实现加法减法运算。

从键盘输入一个十进制两位数的四则运算表达式,如23*56-(8*19)/6+67-8=,编程计算表达式的值,输出十进制结果(有可能是三位或四位十进制),+-*/位置任意。

并要求程序能反复执行直道对“还要继续吗?(y/n)”之类的提示回答“n”或“N”为止三、报告内容1.设计主要内容根据题目的要求,该程序设计的关键是要根据四则运算中()、*、/、+、-、=的优先设置符号的权值,其中(、*、+、-、)、=的权值分别设置为5、4、4、3、3、1、0,然后根据权值大小进行运算。

程序使用数字标志SIGN1、括号标志SIGN2分别来判断数字是否输入完毕和括号是否配对,另外程序定义两个数据存储区域NUMB和MARK,其中NUMB用来保存输入的或运算的数值,MARK用来保存输入的符号及其对应的权值。

程序不断判断输入的符号是否是左括号‘(’,当遇到左括号是在存储区MARK保存其符号,紧跟着将‘(’的权值改为2并保存之,这是为了使程序运算括号内的表达式,当遇到右括号‘)’时括号内运算将结束。

可以把整个源程序大致划分为几个基本结构:程序加法、减法、乘法、除法、显示结果五个部分。

首先用1号功能以输入字符的形式接收输入的算式,再判断输入字符ASCII码,如果是+、-、*、/、=或数字,则跳转到相应功能模块,并把输入的字符转为数值传入BX寄存器,在各功能模块中继续用1号功能输入字符,执行以上操作,将输入号符转为数据存入DX中,由于*、/优先级要高,加、减模块的实现中要根据输入运算符号进行将BX入栈操作,如果是相同优先级运算符,则直接将BX,DX中的数据进行相应运算,输入=则输出运算结果,这时输出字符串Continue?,用户输入y/n执行继续计算和退出操作。

微机原理课程设计(加减乘除运算)

微机原理课程设计(加减乘除运算)

MODEL SMALLCode SegmentAssume CS:Code,DS:codeCR equ 000DHLF equ 000AHKBBack equ 0008H; -------------------------------------; 功能:显示指定地址(Str_Addr)的字符串; 入口:; Str_Addr=字符串地址(要求在数据段); 用法: Output Str_Addr; 用法举例:Output PromptStrOutput MACRO Str_Addrlea dx,Str_Addrmov ah,9int 21hEndM; ----------------------------------功能:输出一个字符; 入口:dl=要显示的字符Output_Chr proc Nearpush axmov ah,02hint 21hpop axretOutput_Chr endp; --------------功能:输出回车换行Output_CTLF proc Nearpush axpush dxmov ah,02hmov dl,0dhint 21hmov dl,0ahint 21hpop dxpop axretOutput_CTLF endp; --------------功能:取光标位置; 入口:无; 出口:DH=行号,DL=列号GetCursor Proc NearPUSH AXPUSH BXPUSH CXXOR BX,BXMOV AH,3INT 10HMOV Cursor_Row,DHMOV Cursor_Col,DLPOP CXPOP BXPOP AXRETCursor_Row DB ?Cursor_Col DB ?GetCursor EndP; ---------------revolver(39629840) 9:44:07postmessage 发送ctrl+x 组合键,有谁会的啊大叔(42947111) 9:44:17功能:置光标位置; 入口:Cursor_Row=行坐标; Cursor_Col: 列坐标)SetCursor Proc NearPUSH CXPUSH BXPUSH AXMOV DH,Cursor_RowMOV DL,Cursor_ColXOR BX,BXMOV AH,2INT 10HPOP AXPOP BXPOP CXRETSetCursor EndP; ---------------------功能:键盘输入一个指定位数的十进制数字,将其转换成二进制数并保存在指定的内存单元。

微机原理及接口技术实验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

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

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

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

微机原理加法及判断程序的编写调试实验

微机原理加法及判断程序的编写调试实验

(1)说明程序基本结构,包括程序中各部分的功能。 (2)说明程序中各部分所用的算法和编程技巧。
4、上机调试说明 (1)上机调试步骤。 (2)上机调试过程中遇到的问题是如何解决的。 (3)对调试源程序的中间结果和最终结果进行分析。 3、画出程序总框图。 (1)写出源程序清单与执行结果 (2)回答思考题
5067+410090Byes symbol space free
0 Warning Errors
0 Severe Errors 3、连接程序
C:\WINDOWS\DESKTOP\BH-86>link Object Modules [.OBJ]: E1 Run File [E1.EXE]: E1 List File [NUL.MAP]: E1 Libraries [.LEB]: E1
2显示的字符串所在地址送入 DL,就
可在显示器上显示该字符串。 MOV DL,OFFSET XX; 将要显示的字符串地址送入 DL MOV AH,09H; 调用 09H 功能 INT 21H; 发中断请求
3、返加 DOS 状态的方法 当执行.EXE 文件时,是在 DOS 状态下进行的,如果希望在执行完.EXE 文件后
4、执行程序 C:\WINDOWS\DESKTOP\BH-86> E1
(可以看到程序执行的结果) 5、进入 DEBUG 状态
C:\WINDOWS\DESKTOP\BH-86>DEBUG E1.EXE (1)、用 U 命令调出原程序,从原程序中找出:代码段地址 CS、代码段偏移址 IP、
数据段地址 DS,ES,数据段偏移量 SI。(0BA3:0000) (2)、用 D 命令观察程序在执行前 DATA 中数据的存放情况。(-D 0BA2:0000) (3)、用 G 命令执行程序后,再观察 DATA 中数据的存放情况。 (4)、用 R 命令显示各寄存器的状态。

微机原理课程设计--用8088设计一个能实现0-9整数加法运算的计算器,和用2位LED数码显示。

微机原理课程设计--用8088设计一个能实现0-9整数加法运算的计算器,和用2位LED数码显示。

二○一一~二○一二学年第一学期信息科学与工程学院课程设计报告书课程名称:微机原理及应用课程设计班级:学号:姓名:指导教师:2011年12月一、程序设计目的综合运用本课程知识,利用集成电路设计实现一些中小规模电子电路或者完成一定功能的程序,以复习巩固课堂所学的理论知识,提高程序设计实现系统、绘制系统电路图的能力,为实际应用奠定一定的基础。

二、实验内容及具体要求用8088设计一个能实现0-9整数加法运算的计算器,和用2位LED数码显示。

键盘包括0-9“+”和“=”12个按键。

具体要求:1.画出连接线路图或功能模块引脚连接图。

2.采用8088CPU作主控制器,8255作为并行接口电路实现按键的扫描以及数码管的显示。

3.采用2个共阴极型LED,只需显示0—255范围内的值。

三、设计分析8255A写方式控制字8255A各端口结构四、流程图五、程序清单CODE SEGMENTASSUME CS:CODE,DS:CODEBEGIN: JMP BEGINBUFF DB 1,2,3,4,5,6TABLE1DW 3E07H,3E0BH,3D0BH,3B0BH,3E0DH,3D0DH,3B0DH,3E0EH,3D0EH,3B0EH; 对应0~9的键盘值DW370EH,370DH,370BH,3707H,3B07H,3D07H,2F07H,2F0BH,2F0DH,2F0EH,1F07H,1F0BH,1F 0DH; 对应其他的键盘值TABLE DB 3FH,6,5BH,4FH,66H,6DH,7DH,7,7FH,6FH,46H,40H,48H,00; 0~9上的字型码X DW 0Y DW 0F DB 0N DB 0C DB 0ADDF DB 0SHI DB 0GE DB 0BEGIN: MOV AX,CSMOV DS,AXCALL CLEARAGAIN: MOV DX,203HMOV AL,8255ACALL LED ;调用子程序CALL KEYCMP F,1JNE AGAINCMP BL,9 ;对比数字键盘JLE D_PROCECMP BL,10JE TO_ADD ; 转到加法子程序CMP BL,11JMP AGAIN ;返回继续循环CLEAR1: CALL CLEARCALL CLBUFJMP AGAIND_PROCE: CMP N,1JE D_P_YMOV CL,4SHL X,CLMOV BH,0ADD X,BXCALL BSHIFTMOV BUFF+5,BLJMP AGAIND_P_Y: MOV CL,4SHL Y,CLMOV BH,0ADD Y,BXCALL BSHIFTMOV BUFF+5,BLJMP AGAINTO_ADD CALL BSHIFT ; 加法子程序的具体实现MOV BUFF+5,BLMOV F,0MOV N,1MOV ADDF,1JMP AGAINKEY PROC ;键盘扫描程序的实现MOV DX,203HMOV AL,10001001BOUT DX,AL ;写控制字MOV F,0MOV DX,201HMOV AL,0OUT DX,ALMOV DX,202HIN AL,DXAND AL,0FHCMP AL,0FHJE K_EXITMOV CX,3000LOOP $ ; 延时IN AL,DXAND AL,0FHPUSH AXMOV DX,203HMOV AL,10000010B; B_IN,C_OUTOUT DX,ALPOP AXMOV BL,ALMOV DX,202HOUT DX,ALMOV DX,201HIN AL,DXAND AL,00111111HMOV BH,ALLEA SI,TABLE1MOV CX,23MOV AH,0NK: CMP BX,[SI]JE FOUNDINC AHADD SI,2LOOP NKFOUND: MOV AL,0 ;不断扫描,等待输入MOV DX,202HOUT DX,ALMOV DX,201HIN AL,DXAND AL,3FHCMP AL,3FHJNE FOUND ;如果无输入继续扫描MOV CX,3000LOOP $MOV F,1MOV BL,AHK_EXIT: RETKEY ENDPSTORE PROC ; 存储程序MOV WORD PTR BUFF,1414HLEA SI,BUFF ;赋给偏移地址MOV CH,4DISPLAY: MOV DL,0MOV AL,BUFF[DL] ;取数MOV AH,0MOV CL,10DIV CLMOV SHI,AH ;求和的十位MOV GE,AL ;和的个位MOV DX,383H ;PA口输出方式选择控制字MOV AL,80HOUT DX,ALMOV DX,380H ;PA口代码输出十位显示MOV AL,TABLE[SHI]OUT DX,ALMOV DX,383H ;PB口方式选择控制字MOV AL,10000000HOUT DX,ALMOV DX,381H ;PB口代码输出个位显示MOV AL,TABLE[GE]OUT DX,ALINC DLJMP DISPLAYS_REL: MOV CL,4ROL BX,CL ;循环左移四位MOV AL,BLAND AL,0FH ; 取低四位MOV [SI+2],ALINC SIDEC CHJNZ S_RELCALL CLEARRETSTORE ENDPCODE ENDSEND START六、硬件部分七、设计小结本次课程设计花费了我很多时间和精力,但是也锻炼了我很多方面的能力。

微机原理课设-加法练习程序

微机原理课设-加法练习程序

课程设计课程设计名称:微机应用系统课程设计专业班级:计科1204班学生姓名:张婷婷学号: 201216010433指导教师:王锋课程设计时间: 2014.12.22-2015.1.3计算机科学与技术专业课程设计任务书一.课程设计实验的目的课程设计的目的在于更好的锻炼我们的实践能力和考验平时学习的成果。

我们是计算机专业,离不开编写代码。

平时上课所学的知识来自于课本,上机实验相对比较少,所能锻炼的操作能力机会不多。

而课程设计是让我们综合平时课本和实验的知识及经验,自己设计和构造,编写一个相对完整的程序。

这不仅仅是对以前知识的巩固,更是锻炼我们的思维,我们的设计与编写程序的能力。

对于我们以后将会从事的计算机类工作,这能很好的为我们打下坚实的基础,所谓积少成多,每学期都做课程设计,到毕业时我们对于编写一个应用软件或许就能较容易驾驭了。

本次微机应用系统课程设计我的题目是加法练习程序设计,虽然只要求加法运算,但我在该程序里添加了减法运算,使得程序相对不会太单调。

虽然给的编程题目可能会与别人一样,但每个人的想法不一样,在设计时添加自己的想法或许就能使程序更加完善了,这也是课程设计对我们的一种锻炼。

二.实验设计的任务与要求加法练习设计程序的内容是:随机给出百位数以内的加法算式,并提示输入答案,若正确给出正确提示,若错误给出错误提示,并提示输入答案;按 R 键继续下一题,按 Q 键返回 DOS。

按照内容要求,在所学知识内容的基础上设计程序,具体的内容设计要求任务如下:1.设计一个菜单,选项为加法和减法的练习。

2.以获取系统中的秒和百分秒作为两个随机数进行加减运算。

3.将输入的答案和运行结果比较,若相等给出正确提示,若错误给出错误提示,并继续输入答案直到正确为止。

4.提示是否继续下一题,按R键继续下一题,按Q键返回 DOS。

这次课程设计是在完成设计要求的基础上,添加了减法练习运算,以仔细、认真、规范的态度完成自己课程设计。

加法程序

加法程序

实验报告课程名称:微机原理与接口技术实验项目:加法程序实验地点:中区图书馆三层专业班级:学号:学生姓名:指导教师:年月日一、实验目的和要求学习数据传送和算术运算指令的用法。

二、实验内容将两个多位十进制数28056,47193相加,并显示加数、被加数、和。

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

三、主要仪器设备计算机一台四、操作方法与实验步骤五、实验数据记录和处理SHOW MACRO B;宏定义MOV DL, BMOV AH, 02HINT 21HENDMDATAS SEGMENT;此处输入数据段代码DATA1 DB33H,39H,31H,37H,34HDATA2 DB36H,35H,30H,38H,32HDATA3 DB'——',0DH,0AH,'$'DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STA DB20 DUP(?)TOP EQU LENGTH STASTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AX ;此处输入代码段代码MOV AX,STACKSMOV 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 DATA2CALL ADDAMOV SI,OFFSET DATA1MOV BX,05SHOW 20HCALL DISPLMOV AH,4CHINT 21HDISPL PROC NEARDS1: SHOW [SI+BX-1]DEC BXJNZ DS1RETDISPL ENDPADDA PROC NEAR ;加法子程序MOV DX,SIMOV BP,DIMOV BX,05AD1: SUB BYTE PTR [SI+BX-1],30H ;将ASCII码转化为十六进制SUB BYTE PTR [DI+BX-1],30HDEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05CLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BL ;带进位相加AAA;调整MOV[SI],AL ;保存结果INC SIINC DILOOP AD2MOV SI,DXMOV DI,BPMOV BX,05AD3: ADD BYTE PTR [SI+BX-1],30HADD BYTE PTR [DI+BX-1],30HDEC BXJNZ AD3RETADDA ENDPCODES ENDSEND START六、实验结果与分析七、讨论、心得。

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

课程设计课程设计名称:微机应用系统课程设计专业班级:计科1204班****:***学号:****************:**课程设计时间:2014.12.22-2015.1.3计算机科学与技术专业课程设计任务书一.课程设计实验的目的课程设计的目的在于更好的锻炼我们的实践能力和考验平时学习的成果。

我们是计算机专业,离不开编写代码。

平时上课所学的知识来自于课本,上机实验相对比较少,所能锻炼的操作能力机会不多。

而课程设计是让我们综合平时课本和实验的知识及经验,自己设计和构造,编写一个相对完整的程序。

这不仅仅是对以前知识的巩固,更是锻炼我们的思维,我们的设计与编写程序的能力。

对于我们以后将会从事的计算机类工作,这能很好的为我们打下坚实的基础,所谓积少成多,每学期都做课程设计,到毕业时我们对于编写一个应用软件或许就能较容易驾驭了。

本次微机应用系统课程设计我的题目是加法练习程序设计,虽然只要求加法运算,但我在该程序里添加了减法运算,使得程序相对不会太单调。

虽然给的编程题目可能会与别人一样,但每个人的想法不一样,在设计时添加自己的想法或许就能使程序更加完善了,这也是课程设计对我们的一种锻炼。

二.实验设计的任务与要求加法练习设计程序的内容是:随机给出百位数以内的加法算式,并提示输入答案,若正确给出正确提示,若错误给出错误提示,并提示输入答案;按 R 键继续下一题,按 Q 键返回 DOS。

按照内容要求,在所学知识内容的基础上设计程序,具体的内容设计要求任务如下:1.设计一个菜单,选项为加法和减法的练习。

2.以获取系统中的秒和百分秒作为两个随机数进行加减运算。

3.将输入的答案和运行结果比较,若相等给出正确提示,若错误给出错误提示,并继续输入答案直到正确为止。

4.提示是否继续下一题,按R键继续下一题,按Q键返回 DOS。

这次课程设计是在完成设计要求的基础上,添加了减法练习运算,以仔细、认真、规范的态度完成自己课程设计。

三.实验设计的思想加法练习程序设计,主要工作是产生两个两位数的随机数进行加运算,而怎么产生随机数是该程序的难点。

在搜集了一些资料后发现很多程序用的随机数是伪随机,是一个比较复杂算法,而不使用算法获得随机数的方法就是获取系统的时间。

在翻阅课本后得知mov ah,2ch int 21h语句可以得到系统时间,在考虑后认为秒和百分秒比较适合,因为在短时间内这两个时间变化的多一些,比较适合用于随机数。

Dh所存的数对应的是秒,Dl所存的数对应的是百分秒。

加法直接将两个随机数相加即可,但减法就相对麻烦些,因为会出现第一个随机数比第二个随机数小得到结果为负数。

为了解决这一问题,在数据段定义了两个变量,用来存放减数和被减数。

在获取随机数时先不显示运算式,先将随机数的值给变量num1和变量mum2,如果相减结果小于0则转回去继续取随机数,直到取得随机数相减记过大于0,则显示运算式继续后面的程序运行。

相对较难的部分解决后则是将整个程序流程串起来,先是显示选择加或减运算,产生的随机数并显示相应的运算式;再是输入结果,对结果进行判断给出对或错的提示,错误时提示继续输入结果,对则继续下一步;最后选择是否继续下一题,R返回最初加减运算选择,Q则退出。

四.实验环境4.1运行环境(1)软件环境●操作系统:Windows 7(2)硬件环境●处理器:Inter Core i5●内存:4.00GB●硬盘空间:500GB4.2开发工具与编程语言(1)开发工具:Masm for Windows集成实验环境 V2012(2)编程语言:汇编五.实验方案先是设计了一个菜单,用于选择进行加法运算还是减法运算,菜单显示来自数据段的字符串。

选择后变转到jiafa或jianfa程序段中,调用产生随机数的random1(秒)和random2(百分秒)程序段中并显示运算式。

将输入的答案通过show程序段将其转换成ASCII码显示出来,再由get程序段将输入的答案转换成对应的数,最后转换成数的答案与计算机运算结果比较,如果相减为0并让其继续输入答案”是否继续下七.实验源代码DATAS SEGMENTmsg db'*******************************',0dh,0ah,'$'addp db'* 1. Addition to practice *: ',0dh,0ah,'$' subp db'* 2. Subtraction to practice *: ',0dh,0ah,'$' sele db'Input your chioce: ','$'corr db 20h,20h,'Correct!',0dh,0ah,'$'erro db 20h,20h,'Error!',0dh,0ah,'$'rorq db'Continue(R) or Exit(Q)?',0dh,0ah,'$'exit db 0dh,0ah,' Press any key to quit...',0dh,0ah,'$' sum dw 0num1 dw 0num2 dw 0DATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXagain:mov dx,offset msgmov ah,09hint 21hmov dx,offset addpmov ah,09hint 21hmov dx,offset subpmov ah,09hint 21hmov dx,offset msgmov ah,09hint 21hselect:call huanmov dx,offset selemov ah,09hint 21hmov ah,1int 21hcmp al,31hjz jiafacmp al,32hcall huanjz jianfagono:mov dx,offset rorqmov ah,09hint 21hkey:mov ah,1int 21hcmp al,72hjz selectcmp al,71hjnz keycall huanmov dx,offset exitmov ah,09hint 21hmov ah,4chint 21h jiafa:call huancall random1mov sum,axcall showmov dl,'+'mov ah,2int 21hcall random2add sum,axcall showjmp next jianfa:call random1mov sum,axmov num1,axcall random2sbb sum,axmov num2,axcmp sum,0jl jianfamov ax,num1call showmov dl,'-'mov ah,2int 21hmov ax,num2call showjmp nextnext:mov dl,'='mov ah,2int 21hcall inputcmp bp,sumjz donemov dx,offset erromov ah,09hint 21hjmp nextdone:mov dx,offset corrmov ah,9int 21hjmp gonorandom1:mov ah,2chint 21hmov al,dhmov ah,0retrandom2:mov ah,2chint 21hmov al,dlmov ah,0retshow:mov ax,axaamor ax,3030hxchg ah,almov dx,axmov ah,2int 21hmov dl,dhint 21hretinput:mov bp,0mov cx,3get:mov ah,0int 16hcmp al,0dhjz okcmp al,'0'jb getcmp al,'9'ja getmov ah,0ehint 10hand ax,0fhxchg bp,axmov bx,10mul bxadd bp,axloop getok:cmp cx,3rethuan:mov dl,0dhmov ah,2int 21hmov dl,0ahmov ah,2int 21hretMOV AH,4CHINT 21HCODES ENDSEND START八.实验结果图1 菜单图2 加法练习运算图3 减法练习运算图4 运算错误和退出九.实验总结加法练习程序设计可能较于平时的一些实验相对简单些,但这次的课程设计是由自己构思和设计的,遇到麻烦的地方也要靠自己去解决,不像平时实验那样,大家完成的内容都一样能够探讨。

所以考验自我学习能力和编程能力,对程序结构流程的设计能力,做出自己满意的程序。

通过课程设计,我们将本学期所学的微机原理、汇编语言的知识重新温习和巩固,加深了我们对知识的理解,熟练了汇编语言的运用,提高了我们的编程与设计能力。

十.参考文献1.《16/32位微机原理、汇编语言及接口技术(第2版)》---(北京电子工业出版社 2003)钱晓捷,陈涛编著2.《32位微型计算机原理与接口技术》---(北京清华大学出版社 2000)仇玉章等编著。

相关文档
最新文档