微机原理课设_加法练习程序
微机原理实验:加减法
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.实现数字运算、键盘输入、LED显示的多任务协调编程二、实验内容和原理1.编写程序,输入两个两位十进制数并显示,按确认键后显示运算结果2.基本功能:能够输入输入数字(非数字无效)并显示结果3.附加功能:光标指示功能(通过LED闪烁实现)以及退格功能三、程序代码ORG 0000HSTART: MOV 78H,#0 ;初始化:78H放0的段码,其余放熄灭码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单元初始置为0MOV 40H,#0 ;40H单元初始置为0MOV 41H,#0 ;41H单元初始置为0LOOP: LCALL DIR ;调用显示子程序LCALL KEY ;调用键盘检测程序INC R5 ;按键次数加1S1: CJNE A,#10,S2 ;不是"+"键,跳到S2LJMP FUN ;是"+"键,跳到FUNS2: CJNE A,#11,S3 ;不是"-"键,跳到S3LJMP FUN ;是"-"键,跳到FUNS3: CJNE A,#12,S4 ; 不是"*"键,跳到S4LJMP FUN ; 是"*"键,跳到FUNS4: CJNE A,#13,S5 ; 不是"/"键,跳到S5LJMP FUN ; 是"/"键,跳到FUNS5: CJNE A,#14,S6 ; 不是"="键,跳到S6LJMP FUN ;是"="键,跳到FUNS6: CJNE A,#15,N1 ; 不是"CL"键,跳到N1LJMP START ; 是"CL"键,跳到STARTN1: CJNE R5,#1,N2 ;若按键次数不等于1,跳到N2 LJMP D11 ;跳到D11N2: CJNE R5,#2,START;若按键次数不等于2,跳到START LJMP T1 ;跳到T1D11: MOV R4,A ;将A写入R4MOV 78H,A ;输入值送显示个位缓存MOV 79H,#10 ;将10送到79H单元LJMP LOOP ;跳转到循环T1: MOV 53H,A ;将A写入53HMOV B,#10 ;将10置入BMOV A,R4 ;将上一次输入的R4写进A MUL AB ;A乘以10ADD A,53H ;53H里面的值与A相加MOV R4,A ;将新的值置入到R4 MOV 79H,78H ;个位到十位MOV 78H,53H ;新数为个位LJMP LOOP ;跳转到循环FUN:MOV 78H,#10 ;将10置入到78H MOV 79H,#10 ;将10置入到79HMOV R0,30H ;与上次功能键交换MOV 30H,AMOV A,R0CJNE A,#10,FUN1 ;判断功能键LJMP ADDY ;"+"FUN1: CJNE A,#11,FUN2LJMP SUBT ;"-"FUN2: CJNE A,#12,FUN3LJMP MULT ;"*"FUN3: CJNE A,#13,FUN4LJMP DIVI ;"/"FUN4: CJNE A,#14,FUN5 ;首次按功能键,即A=#0 LJMP EQUA ;"="FUN5: MOV 40H,R4 ;保存第一个数MOV R5,#0 ;按键次数清零LJMP 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 ;带借位的减法,第一个数减第二个数JB CY,BCD2 ;借位为1,跳转到BCD2MOV 40H,A ;将减的结果送40HMOV R5,#0 ;按键次数清零LJMP BCD ;跳转到BCDMULT: MOV A,40H ;乘法,第一个数送累加器MOV B,A ;将A送BMOV A,R4 ;将第二个数送累加器MUL AB ;第一个数乘以第二个数MOV R5,#0 ;按键次数清零JB OV,BCD1 ;若乘法结果溢出,则跳转到BCD1 MOV 40H,A ;将A送40HLJMP BCD ;跳转到BCDDIVI: MOV A,R4 ;除法,第二个数送累加器MOV B,A ;将第二个数送BMOV A,40H ;将第一个数送ADIV AB ;A除以BJB OV,OF ;当B为0时跳到OFMOV 40H,A ;将A送40HMOV R5,#0 ;按键次数清零LJMP BCD ;跳转到BCDEQUA: MOV R5,#0 ;按键次数清零MOV 31H,A ;将A送31HLJMP BCD ;跳转到BCD;----乘法溢出时的处理程序BCD1: ;乘法溢出时的处理程序MOV 78H, B ;将高8位送78HMOV 79H, A ;将低8位送79HLCALL HEX2BCD ;调用子程序把78H、79H中的数字,转换成BCD码,送到7AH 7BH 7CH MOV A, 7CH ;下面,把万千百十个位,分别存入7CH 7BH 7AH 79H 78HMOV B, #16DIV AB ;除以16,目的是分离出高、低四位MOV 79H, A ;存放十位MOV 78H, B ;存放个位MOV A, 7AHMOV 7CH, A ;存放万位MOV A, 7BHMOV B, #16DIV ABMOV 7BH, AMOV 7AH, BLJMP LOOPHEX2BCD: ;子程序:把78H、79H中的数字,转换成BCD码,送到7AH 7BH 7CH CLR AMOV 7AH, A ;先清零MOV 7BH, AMOV 7CH, AMOV R6, #16 ;共转换十六位数LOOPP:CLR CMOV A, 79H ;从待转换数的高端移出一位到Cy RLC AMOV 79H, AMOV A, 78HRLC AMOV 78H, AMOV A, 7CH ;送到BCD码的低端ADDC A, 7CH ;带进位加。
微机原理课程设计
微机原理 课程设计一、课程目标知识目标:1. 让学生理解微机的基本原理和结构,掌握微处理器的工作机制。
2. 使学生掌握汇编语言的基本指令,能够阅读和编写简单的汇编程序。
3. 帮助学生了解微机系统中内存、I/O设备的基本原理及其与CPU的交互方式。
技能目标:1. 培养学生运用汇编语言进行程序设计的能力,能够实现基本的输入输出、逻辑判断和循环等操作。
2. 培养学生分析和解决微机系统常见问题的能力,如调试程序、处理硬件故障等。
3. 提高学生动手实践能力,通过课程设计项目,使学生能够独立完成一个简单的微机系统设计与实现。
情感态度价值观目标:1. 培养学生对微机原理及计算机科学的兴趣,激发他们探索精神和技术创新意识。
2. 培养学生团队协作精神,学会与他人共同分析问题、解决问题,提高沟通能力。
3. 引导学生认识到微机技术在国家经济发展和国防建设中的重要作用,增强学生的社会责任感和使命感。
课程性质:本课程为理论与实践相结合的课程,注重培养学生的实际操作能力和实际应用能力。
学生特点:学生已具备一定的电子技术和计算机基础知识,对微机原理有一定了解,但缺乏实践经验。
教学要求:教师需结合课程性质、学生特点,采用案例教学、项目驱动等教学方法,引导学生主动学习,提高学生的实践能力和综合素质。
在教学过程中,注重分解课程目标,确保学生能够达到预定的学习成果。
二、教学内容1. 微机原理概述:介绍微机的发展历程、基本结构及工作原理,重点讲解CPU、内存、I/O设备等核心组件的作用和相互关系。
相关教材章节:第一章 微机原理概述2. 汇编语言基础:讲解汇编语言的基本概念、语法和指令系统,使学生掌握汇编程序的编写和调试方法。
相关教材章节:第二章 汇编语言基础3. 微机系统编程:学习微机系统中的程序设计方法,包括顺序程序设计、分支程序设计、循环程序设计等。
相关教材章节:第三章 微机系统编程4. 内存与I/O设备:介绍内存管理、I/O设备控制原理,分析微机系统中内存、I/O设备的访问方法。
微机原理与接口技术课程设计报告加减计数器完整版
目录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 使用是非常利于降低成本,另外一方面键盘比用 独立按键要美观。
微机原理加法及判断程序的编写调试实验
1 当 x>0
y=
0 当 x=0
-1 当 x<0
二、实验目的和要求
实验目的 1、写汇编语言程序的基本方法和基本框架。 2、学会编写顺序结构、分支结构和循环结构的汇编程序。 3、掌握程序中数据的产生与输入输出的方法。 三、实验要求 1、实验前准备 (1)分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。 (2)写出算法或画出流程图。 (3)写出源程序。 (4)对程序中结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。 2、本实验要求在 PC 机上进行。
四、 实验设备(软、硬件)
1、 IBM PC 和(PC/XT、AT、286、386、486)
2、 H-86/51 通用微机实验培养装置
五、 仪器使用说明
1、在 EDIT 中输入原程序,即生成 .asm 文件。 2、汇编.asm 文件
C:\WINDOWS\DESKTOP\BH-86>masm Source filename [.ASM]: E1 Object filename [E1.BOJ]: E1 Source listing [NUL.LST]: E1 Cross—reference[NUL.CRF]: E1
九、 参考资料
1、《微型计算机系统原理及应用-第四版》,周明德编著,清华大学出版社,2002 年。 2、《微型机接口技术》,王承发、刘岩主编,高等教育出版社,1998 年 3、《IBM PC 宏汇编语言程序设计》,张怀莲编,电子工业出版社,1989 年
十、思考题
程序中的原始数据是以怎样的形式存放在数据区中?请用 DEBUG 调试程序进行观察,
(5)、用 T 命令做单步跟踪执行程序。
附:DOS 调用程序
1、在显示器上显示一个字符 调用 02H 功能调用号,发 21H 号中断,将要显示的字符的 ASCII 码送入 DL,
微机原理课程设计-四则运算
《微机原理与接口技术》课程设计电气与自动化工程系 通信工程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执行继续计算和退出操作。
微机原理与接口技术课程设计报告-加减计数器-完整版
目录1.课程设计题目 (1)2.课程设计任务及要求 (1)3.总体方案与设计说明 (1)4.硬件电路设计及描述 (3)5.软件设计流程及描述 (6)6.源程序代码 (8)7.系统调试 (12)8.结论与说明 (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,结束退出设计思路:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序实现2位十进制数以内的及减法运算。
运算完成后将运算的结果储存并显示到LED显示器上。
四.硬件电路设计及描述(含所需器件、硬件原理图)4.1硬件电路键盘输入及LED数码管通过8255A接口与系统总线连接,键盘的16个按键组成8*2矩阵,其中8根矩阵线作为8255A的输出线与PB7~PB0连接,2根矩阵线作为8255A的输入线与PC7、PC6连接。
键盘采用逐次扫描原理,16个按键中0~9座位数字健,+、-、=作为加、减和等号功能键,C为清零键。
4.2键盘输入模块键盘是常用信息输入元件,其实键盘也是由一个个按钮组成,如果是独立按钮的话必须要需要一个I/O口对它进行检测,而键盘往往这需要键盘按钮数一半的I/O口数对它进行检测,也许对一个比较简单的系统I/O口数一般不是问题,但对于一个大型、复杂的系统来说I/O资源就显得非常珍贵了,尽量减少I/O使用是非常利于降低成本,另外一方面键盘比用独立按键要美观。
微机原理与接口技术:加法减法运算指令
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指令主要用于多字节数的加法运算,以保证低位向高位的进位被正确接收。
微机原理-加法计算器设计及显示
微机原理-加法计算器设计及显示实验报告指导老微机原理实验课程名称:成绩:师:实验类实验名称:加法计算器及显示同组学生姓名:型:二、实验内一、实验目的和要求(必填)容和原理(必填)四、操作方法三、主要仪器设备(必填)和实验步骤装六、实验结果五、实验数据记录和处理线与分析(必填)订七、讨论、心得实验目的和要求一、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 ; 带进位加。
微机原理实验(含解答程序)
微机原理实验(含解答程序)-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN微机原理实验课题(共16个内容,附解答程序)(汇编程序可以使用MASM FOR WINDOWS)1.将偏移地址为2000h开始的100个单元依次设置为0~99。
2.将两个64位的二进制数相加,记录相加的和以及各个状态标志的值。
3. 编写程序,在屏幕上分行显示自己的姓名、学号。
4. 编写程序,通过键盘输入0——9之间的一个数字,利用查表法计算其平方。
在DEBUG下查看执行结果。
5. 用分支结构设计程序实现符号函数100010xy xx>⎧⎪==⎨⎪-<⎩,要求x和y存放在内存单元中,并将判断的结果在屏幕上显示输出。
6. 在键盘上输入一个字符,判断是否为小写字母,若不是,显示错误信息,若是,则将其转换为大写字母并显示。
7. 在键盘上输入一个字符,判断它是一个数字、大写字母还是小写字母,若为数字,则显示digital,若为字母,显示letter,否则,显示other。
8. 将字节型变量x的低四位(一位十六进制数)以十六进制数的形式显示。
9. 编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N (N+1)大于200为止,并将结果由屏幕上显示出来。
10. 将字形变量x以二进制数的形式在屏幕上显示输出。
11. 将字形变量x以十六进制数的形式在屏幕上显示输出。
12. 将内存单元缓冲区中的符号数(20个)按从小到大的顺序排列,并以十六进制数的形式显示。
13. 编制程序计算S=1+2+3+……+N,并将结果由屏幕上显示出来。
(要求:在屏幕上显示提示信息,提示输入N,N用十六进制表示,且N小于0FH,用子程序实现(段内),将输入的结果用十六进制数输出显示,显示结果的程序用子程序是实现(段间))。
14.要求在键盘上输入一个小于四位的十进制数,将其转换为二进制数存放,并讲转换后的结果以十六进制数的形式在屏幕上显示出来。
微机原理课程设计(加减乘除运算)
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多字节加减法
进位 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)说明程序基本结构,包括程序中各部分的功能。 (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 命令显示各寄存器的状态。
微机原理实验指导书1-二进制多位加法运算
微机原理实验指导书1-二进制多位加法运算实验一二进制多位加法运算一、实验目的1.熟悉实验系统键盘显示的使用。
2.掌握使用加法类运算指令编程及调试方法。
3.掌握加法类指令对状态标志位的影响。
二、实验设备与工具1.微机原理与接口技术实验箱。
2.微型计算机。
三、实验原理及方法实验内容:计算X+Y+Z=?(X、Y、Z为16位二制数)本实验是三个十六位二制数相加运算,因此,当X+Y时要考虑用ADC指令,把进位C加到结果的高16位中,当(X+Y)+Z时,再把进位C加到结果的高16位中,本实验如设定三个加数0FFFFH,计算结果应为2FFFDH。
四、实验步骤1.打开实验箱前盖。
检查:(1)JK(开关)置‘系统’:键盘/显示接口选择系统配置的8255接口芯片,进入监控状态。
(2)KB6:通讯选择开关,KB6开关拨向88一侧(单8086实验仪无KB6),选择PC机和8086系统通讯。
(3)不插或卸掉已装的CPU卡(单8086实验仪无CPU卡安装、插座)。
2.将随机配送的串行通讯线,一端与实验仪的RS232D型插座CZ1相连,另一端与PC机COM1或COM2串行口相连。
3.接通实验系统电源,+5V LED指示灯应正常发光,实验仪数码管应显示闪动P.,说明实验仪初始化成功,处于待命状态。
(否则应及时关闭电源,待修正常后使用)4.打开PC机电源,执行DJ8086K的集成调试软件,关于该软件的详细说明请参阅《DJ8086K实验系统与PC机联机操作部分》。
5.编写程序,在PC机和实验系统联机状态下,运行该实验程序。
如可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598k8Asm文件夹,点击S1.ASM 文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或“单步运行”,即开始运行程序。
6.运行完后,运算结果保留在内存4100H~4102H单元中,点击DJ-8086K软件中存贮器RAM窗口,输入RAM的起始地址4100、4101、4102,当三个被加数为0FFFFH,三个单元内容应为FD、FF、02。
微机原理课设-加法练习程序
课程设计课程设计名称:微机应用系统课程设计专业班级:计科1204班学生姓名:张婷婷学号: 201216010433指导教师:王锋课程设计时间: 2014.12.22-2015.1.3计算机科学与技术专业课程设计任务书一.课程设计实验的目的课程设计的目的在于更好的锻炼我们的实践能力和考验平时学习的成果。
我们是计算机专业,离不开编写代码。
平时上课所学的知识来自于课本,上机实验相对比较少,所能锻炼的操作能力机会不多。
而课程设计是让我们综合平时课本和实验的知识及经验,自己设计和构造,编写一个相对完整的程序。
这不仅仅是对以前知识的巩固,更是锻炼我们的思维,我们的设计与编写程序的能力。
对于我们以后将会从事的计算机类工作,这能很好的为我们打下坚实的基础,所谓积少成多,每学期都做课程设计,到毕业时我们对于编写一个应用软件或许就能较容易驾驭了。
本次微机应用系统课程设计我的题目是加法练习程序设计,虽然只要求加法运算,但我在该程序里添加了减法运算,使得程序相对不会太单调。
虽然给的编程题目可能会与别人一样,但每个人的想法不一样,在设计时添加自己的想法或许就能使程序更加完善了,这也是课程设计对我们的一种锻炼。
二.实验设计的任务与要求加法练习设计程序的内容是:随机给出百位数以内的加法算式,并提示输入答案,若正确给出正确提示,若错误给出错误提示,并提示输入答案;按 R 键继续下一题,按 Q 键返回 DOS。
按照内容要求,在所学知识内容的基础上设计程序,具体的内容设计要求任务如下:1.设计一个菜单,选项为加法和减法的练习。
2.以获取系统中的秒和百分秒作为两个随机数进行加减运算。
3.将输入的答案和运行结果比较,若相等给出正确提示,若错误给出错误提示,并继续输入答案直到正确为止。
4.提示是否继续下一题,按R键继续下一题,按Q键返回 DOS。
这次课程设计是在完成设计要求的基础上,添加了减法练习运算,以仔细、认真、规范的态度完成自己课程设计。
微机原理加法器课程设计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口为输入。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计课程设计名称:微机应用系统课程设计专业班级:计科1204班学生姓名:张婷婷学号: 201216010433指导教师:王锋课程设计时间: 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则对,提示correct,否则输入的答案是错的,提示error并让其继续输入答案直到正确为止。
在答案正确后,提示“Continue(R) or Exit(Q)?”是否继续下一题,按R继续下一题,按Q则返回DOS。
七. 实验源代码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:STACKS START: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 21hjiafa:call huancall random1mov sum,axcall showmov dl,'+'mov ah,2int 21hcall random2add sum,axcall showjmp nextjianfa: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 next next: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,3 get: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)仇玉章等编著。