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

合集下载

微机原理实验:加减法

微机原理实验:加减法
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.实现数字运算、键盘输入、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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)仇玉章等编著。

相关文档
最新文档