加法练习程序设计说明书
微机原理是一门专业基础课程,它的主要内容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言设计以及微型计算机各个组成部分介绍等内容。要求对微机原理中的基本概念有较深入的了解,能够系统地掌握微型计算机的结构、8086微处理器和指令系统、汇编语言程序设计方法、微机系统的接口电路设计及编程方法等,并具有综合运用所学知识分析问题和解决问题的能力,进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。
加法练习程序设计,主要工作是产生两个两位数的随机数进行加运算,而怎么产生随机数是该程序的难点。在搜集了一些资料后发现很多程序用的随机数是伪随机,是一个比较复杂算法,而不使用算法获得随机数的方法就是获取系统的时间。
先做一个RANDOM的随机种子的子程式,其实是伪随机过程,指定一个比较复杂的算法,然后根据该子程式输出的结果来产生随机的加法算式。产生一个被加数N1,产生一个加数N2。然后用ADD运算加法,将结果存进RESULT内显示N1+N2,RANDOM的随机种子子程式都调用一次,保证产生不同的加法。
关键词: 加法练习;子程序;编制
1绪论
1.1基本内容
微机原理中的基本概念有较深入的了解,能够系统地掌握微型计算机的结构、8086微处理器和指令系统、汇编语言程序设计方法、微机系统的接口电路设计及编程方法等,并具有综合运用所学知识分析问题和解决问题的能力,进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。
加法练习程序设计,主要工作是产生两个两位数的随机数进行加运算,而怎么产生随机数是该程序的难点。在搜集了一些资料后发现很多程序用的随机数是伪随机,是一个比较复杂算法,而不使用算法获得随机数的方法就是获取系统的时间。在翻阅课本后得知 mov ah,2ch int 21h语句可以得到系统时间,在考虑后认为秒和百分秒比较适合,因为在短时间内这两个时间变化的多一些,比较适合用于随机数。Dh 所存的数对应的是秒,Dl 所存的数对应的是百分秒。加法直接将两个随机数相加即可,但减法就相对麻烦些,因为会出现第一个随机数比第二个随机数小得到结果为负数。为了解决这一问题,在数据段定义了两个变量,用来存放减数和被减数。在获取随机数时先不显示运算式,先将随机数的值给变量num1 和变量 mum2,如果相减结果小于 0 则转回去继续取随机数,直到取得随机数相减记过大于 0,则显示运算式继续后面的程序运行。
相对较难的部分解决后则是将整个程序流程串起来,先是显示选择加或减运算,产生的随机数并显示相应的运算式;再是输入结果,对结果进行判断给出对或错的提示,错误时提示继续输入结果,对则继续下一步;最后选择是否继续下一题,R 返回最初加减运算选择,Q 则退出。
8255A芯片 Intel 8086/8088 系列的可编程外设接口电路(Programmable Peripheral Interface)简称 PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。
完成随机给出百位数以内的加法算式,并提示输入答案,若正确给出正确提示,若错误给出错误提示,并提示输入答案;按 R 键继续下一题,按 Q 键返回 DOS的要求,设计需要输入的键盘和显示的屏幕,以8255A作为外设接口电路的设计,以键盘进行数字的输入,在DOS进行选择,最后的“R”和“Q”的操作,本次均在模拟器上进行设计。
这次微机应用系统课程设计任务要求是加法练习程序设计,虽然只要求加法运算,但在该程序里添加了减法运算,进行创新,使得程序相对不会太单调。
2方案选择及论证
2.1设计方案
加法练习程序设计,主要工作是产生两个两位数的随机数进行加运算,而怎么产生随机数是该程序的难点。在搜集了一些资料后发现很多程序用的随机数是伪随机,是一个比较复杂算法,而不使用算法获得随机数的方法就是获取系统的时间。在翻阅课本后得知 mov ah,2ch int 21h语句可以得到系统时间,在考虑后认为秒和百分秒比较适合,因为在短时间内这两个时间变化的多一些,比较适合用于随机数。Dh 所存的数对应的是秒,Dl 所存的数对应的是百分秒。加法直接将两个随机数相加即可,但减法就相对麻烦些,因为会出现第一个随机数比第二个随机数小得到结果为负数。为了解决这一问题,在数据段定义了两个变量,用来存放减数和被减数。在获取随机数时先不显示运算式,先将随机数的值给变量num1 和变量 mum2,如果相减结果小于 0 则转回去继续取随机数,直到取得随机数相减记过大于 0,则显示运算式继续后面的程序运行。
相对较难的部分解决后则是将整个程序流程串起来,先是显示选择加或减运算,产生的随机数并显示相应的运算式;再是输入结果,对结果进行判断给出对或错的提示,错误时提示继续输入结果,对则继续下一步;最后选择是否继续下一题,R 返回最初加减运算选择,Q 则退出。
2.1.1方案一
不带进位的加法运算指令 ADD
ADD 指令完成两个操作数相加,并将结果保存在目的操作数中。
指令格式: 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 结果存回 B