汇编步骤流程图
- 格式:doc
- 大小:57.50 KB
- 文档页数:6
科研处工作流程图部门领导签字:分管校领导签字人文社科项目申报流程图人文社科项目中期管理流程图人文社科项目结题流程图人文社科项目归档流程图自然科学科研项目申报工作流程图自然科学科研成果的奖励及界定流程图(中等级风险)自然科学科研项目过程管理流程图专利申请工作流程图教师填写专利申请审核表;—→所在单位审核;—→科研处审核批准;—→个人直接或通过专利公司向国家知识产权局提交申请文件;—→科研处参与申请流程管理;—→符合条件授权,不符合条件驳回或撤回。
专利(成果)转化工作流程图企业直接或通过中介提出专利(成果)需求;—→科研处确定具体需求情况(转让、独占许可、排他许可、普通许可);—→科研处进行价值评估并与发明人交流;—→与公司进行谈判达成协议;—→公司付款、学校交付专利文件;—→根据学校文件分配转让费。
科研处工作流程图5-3:纵向项目经费卡制作工作流程图项目主管部门下达批文和拨款通知;—→科研处根据上级文件和纵向项目管理办法出具经费划拨单;—→科研处负责人审批;—→报财务处综合科、会计科将科研经费纳入学校收入—→财务处预算科办理经费使用卡;—→科研处到财务处领取经费卡发给项目负责人。
科研处工作流程图5-4:横向项目经费卡制作工作流程图教师凭合同书或协议书申请办理以及经费到账凭证(发票复印件)—→科研处科技服务部初审并制作制卡文件—→科研处办公室核查、报处长审批—→报财务处综合科、会计科将科研经费纳入学校收入—→财务处预算科办理经费使用卡—→科研处到财务处领取经费卡发给项目负责人。
校企合作协议签订工作流程图由企业或校方提出合作事宜;—→科技服务部参与协商,审核修改协议书;—→报领导审批;—→签订协议书;—→履行协议。
校大学生专利大赛工作流程图发布通知;—→学院组织学生发明创造;—→学生填写申报书、完成样品制作;—→以学院为单位上报申报材料—→组织专家初审、遴选;—→汇报评审、确定获奖名单;—→发文表彰奖励。
实验四子程序设计一、实验目的(1)掌握汇编语言子程序设计方法。
(2)掌握主程序与子程序之间的调用关系及调用方法。
(3)掌握通过寄存器传送参数的方法。
二、实验环境(1) 硬件环境:计算机系统windows;(2) 软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验内容(方法步骤):编程实现:十进制到十六进制数转换程序。
程序要求:从键盘取得一个十进制数,然后把该数以十六进制形式在屏幕上显示出来。
四、实验说明(1) 键盘输入的十进制数(ASCII),要将它转换成二进制存放。
⇒子程序:DECIBIN(2) 二进制转换成十六进制数并显示⇒子程序:BINIHEX(3) 为避免屏幕上的重叠,必须有回车和换行功能。
⇒子程序:CRLF用三个子程序联合实现题目要求⇒联合由主程序达到。
将BX寄存器作为过程之间传送转换数据的“交通员”。
五、实验步骤(1)编辑、汇编源程序,生成相应的可执行文件(.EXE)(2)检查程序执行的结果是否正确。
六、流程图主程序流程图如下图:子程序CRLF流程图如下图:子程序DECIBIN流程图如下图:子程序BINIHEX流程图如下图:七、源程序data segmentdata endscode segmentassume cs:code,ds:data main:call DECIBINcall CRLFcall BINIHEXmov ah,4Chint 21hDECIBIN PROCMOV BX,0NEWCHAR:MOV AH,1INT 21HSUB AL,30HJL EXITCBWXCHG AX,BXMOV CX,10DMUL CXXCHG AX,BXADD BX,AXJMP NEWCHAR EXIT:RETDECIBIN ENDPCRLF PROC NEARMOV AH,02HMOV DL,0AHINT 21HMOV AH,02HMOV DL,0DHINT 21HRETCRLF ENDPBINIHEX PROC NEAR START:MOV CH,4NOTATE:MOV CL,4ROL BX,CLMOV AL,BLAND AL,0FHADD AL,30HCMP AL,3AHJL PRINTITADD AL,7HPRINTIT:MOV DL,ALMOV AH,2INT 21HDEC CHJNZ NOTATERETBINIHEX ENDPcode endsend main八、问题思考(1)当输入“#”时,退出主程序,如何修改程序?(2)说明用寄存器传送参数的过程及其具体方法,各子程序的应用。
公司工作流程图汇编目录一日常办公流程1。
发文管理流程图 (2)2. 收文管理流程图 (3)3。
用章管理流程图 (4)4. 会议组织流程图 (5)5. 投诉信访流程图 (6)6。
办公、劳保用品购买管理流程图 (7)7. 办公、劳保用品申领流程图 (8)二、人力资源管理流程8. 员工请假或出差管理流程图 (9)9. 考勤管理流程图 (10)10.员工考核管理流程图 (11)11.员工培训管理流程图 (12)三、投资企业管理流程12。
企业(全资)战略与目标管理流程图 (13)13.企业(参股)决策经营管理(服务)流程图 (14)四、经营性房产管理流程14。
经营性房产合同管理流程图 (15)15。
经营性房产租金收缴管理流程图 (16)16。
消防、环卫、保安等综合治理工作检查流程图(17)17.经营性房产招投标管理流程图 (18)发文管理流程图相关部门综合部总经理收文管理流程图总经理综合部相关部门部门起草 公文部门经理审核登记公文编号并 进行规范核定审批综合部经理审核校稿、更正、复印公文草样发文登记清单印章使用登记打印样稿正式公文公文样稿信息存档待发公文、盖章 填写发文登记表公文立卷归档打印样稿是否用章管理流程图相关部门/个人综合部总经理批阅相关文件登记阅文批示单部门负责人签收、组织承办综合部经理审核 向执行部门移交公 文及阅文批示单已批示的公文外来公文 已审核的公文 已批示 的公文阅文批示单定期检查具体办理情况、催办单办复、公文立卷归档具体承办签收外来 文件是否需要公司领导审核是否需要下发办理办理还文手续归档与维护会议组织流程图投诉信访流程图办公、劳保用品购买管理流程图办公、劳保用品申领流程图员工请假或出差管理流程图考勤管理流程图员工考核管理流程图员工培训管理流程图企业(全资)战略与目标管理流程图企业(参股)决策经营管理(服务)流程图经营性房产合同管理流程图经营性房产租金收缴管理流程图消防、环卫、保安等综合治理工作检查流程图经营性房产招投标管理流程图。
汇编语言编程实验报告学号:姓名:成绩:目录一、实验一: ......................................................错误!未定义书签。
二、实验二: (4)三、实验三: (8)四、实验四: (10)五、实验五: ......................................................错误!未定义书签。
六、实验六: (19)七、汇编实验总结 (23)实验一一. 实验题目【汇编语言补充作业T20T20】编写完整程序,利用】编写完整程序,利用DOS 系统功能调用,从键盘输入一个字符串,并将该字符串从屏幕上换行后并输出。
二. 程序流程及思路实现字符串输入,需要分成三个步骤:实现字符串输入,需要分成三个步骤:1、在数据段中定义一个缓存区为存放字符串做准备;2、DOS 系统功能调用0AH 号子功能,(DS:DX DS:DX))= = 输入缓冲区首址;输入缓冲区首址;输入缓冲区首址;3、在输入的字符串尾加上‘、在输入的字符串尾加上‘$$’字符,以作为输出结束条件。
’字符,以作为输出结束条件。
实现字符串输出,则需要注意的问题是:实现字符串输出,则需要注意的问题是:1、缓冲区第三个字节才开始存放输入的字符,前两个字节分别存放缓冲区长度和字符串实际字符数;和字符串实际字符数;2、输出回车换行可利用字符串:、输出回车换行可利用字符串:CR DB 0AH,0DH,CR DB 0AH,0DH,CR DB 0AH,0DH,’’$’。
’。
三. 源程序清单DATA SEGMENTN EQU 50MAXLEN DB N ;MAXLEN DB N ;缓冲区字符的最大长度缓冲区字符的最大长度缓冲区字符的最大长度ACTLEN DB ? ;ACTLEN DB ? ;实际字符个数实际字符个数实际字符个数STRING DB N DUP(?) ;STRING DB N DUP(?) ;字符空间字符空间字符空间CR DB 0AH,0DH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXLEA DX,MAXLENMOV AH,0AHINT 21H ;字符串输入字符串输入MOV AH,09HLEA DX,CRINT 21H ;回车换行回车换行MOV BL,MAXLEN+1 ;取实际的字符长度取实际的字符长度MOV BH,0LEA SI,MAXLEN+2 ;取字符开始的首地址取字符开始的首地址MOV BYTE PTR [SI+BX],'$' ;输出结尾要加上输出结尾要加上$ $MOV DX,SI ;把开始存放字符的首地址赋给DX(注:以下程序采用b方法)方法)。
微机原理实验报告班级:XXXXX姓名:XXXX学号:20XXXXXXXXX大学信息科学与技术学院信息工程系实验一汇编语言程序设计-(具体题目)一、实验目的(根据实际情况修改):1、熟悉MASM编译环境,了解程序的汇编方法;2、熟悉常用汇编指令,学习汇编程序设计方法;3、学习汇编语言的调试过程,通过调试过程认识CPU执行程序的方式;4、了解冒泡法原理,学习多重循环的编程方法。
二、实验内容:编写程序,用冒泡法实现将数据段内9,8,7,6,5,4,3,2,1按照由小到大的顺序重新排列。
三、程序流程图和程序代码1、流程图2、代码与注释(代码不能和指导书完全一样,写出注释,写出寄存器尤其是DS的值)data segmentbuf1 db 8,7,6,5,4,3,2,1data endscode segmentassume cs:code,ds:datastart: mov ax,data //传送数据段datamov ds,axmov dx,7 //dx放外循环7次L3: mov cx,dx //cx放内循环7次lea si,buf1 //将db里的数据传送到siL2: mov al,[si]cmp al,[si+1] //比较[si]与[si+1]jb L1 //[si]<[si+1],跳转到L1xchg al,[si+1] //[si]>[si+1],两两交换mov [si],alL1: inc si //si减1loop L2 //循环L2dec dx //外循环减1,没减到0则跳转到L3 jnz L3 //入内循环,计数初值mov ah,4chint 21hcode endsend start四、调试过程及遇到的问题1、程序执行截图2、调试用到的命令-U命令:查看数据段地址;-d命令:查看运行前后存储器内容;-g命令:运行程序;-t命令:查看运行前后寄存器和存储器内容。
3、遇到的问题及解决办法问题:运行程序后,数据1在存储器地址末尾没变。
办公室日常各项工作流程图汇编(11篇)1.办公室工作流程图汇编:人事招聘流程图- 发布招聘信息- 筛选简历- 安排面试- 面试评估- 发送录用通知- 安排入职手续- 员工档案管理2.办公室工作流程图汇编:经费报销流程图- 填写报销申请- 提交报销申请- 财务审核- 批准报销- 支付报销款项- 处理报销凭证- 财务记录更新3.办公室工作流程图汇编:会议组织流程图- 确定会议主题和目的- 确定参会人员和时间地点- 发送会议通知- 准备会议材料- 召开会议- 记录会议内容- 分发会议纪要4.办公室工作流程图汇编:文件管理流程图- 文件收集- 文件分类与编目- 文件归档- 文件检索- 文件借阅- 文件销毁- 文件存档5.办公室工作流程图汇编:客户服务流程图- 接待客户- 确定客户需求- 提供产品或服务方案- 提供报价和合同- 客户确认订单- 安排生产或提供服务- 客户满意度调查6.办公室工作流程图汇编:项目管理流程图- 确定项目目标- 制定项目计划- 分配项目资源- 实施项目任务- 监控项目进展- 完成项目验收- 项目总结和评估7.办公室工作流程图汇编:办公用品采购流程图- 填写采购申请- 提交采购申请- 采购申请审批- 确定供应商和报价- 下达采购订单- 商品验收- 收到办公用品8.办公室工作流程图汇编:网络维护流程图- 接收和记录网络故障报告- 分析故障原因- 制定网络维护计划- 进行网络维护工作- 测试网络连通性- 故障解决与修复- 记录和报告维护情况9.办公室工作流程图汇编:员工培训流程图- 确定培训需求- 制定培训计划- 确定培训方式和时间地点- 安排培训师资和设备- 进行培训- 培训反馈和评估- 培训记录和归档10.办公室工作流程图汇编:销售订单处理流程图- 接收销售订单- 确认订单信息- 确定任务分配- 处理订单- 准备发货- 发送发货通知- 客户确认订单收货11.办公室工作流程图汇编:项目变更管理流程图- 提交变更申请- 变更申请审批- 变更评估与确认- 计划变更实施- 实施变更- 变更验证与验收- 变更记录更新12.办公室工作流程图汇编:IT支持流程图- 收集 IT 支持请求- 诊断 IT 问题- 提供 IT 解决方案- 实施问题修复- 检查问题解决是否满足要求- 报告问题解决情况- 归档 IT 支持记录办公室的 IT 支持流程确保员工在遇到技术问题时能够快速得到帮助和解决方案。
汇编语言程序实例第一份:用汇编语言对4位10进制数加密。
密码是0123456789对应为9082746315。
DATA SEGMENTTABLE DB 39H,30H,38H,32H,37H,34H,36H,33H,31H,35H;密码表RESULT DB 4 DUP(?);四位十进制数对应的密码DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODEMAIN PROC FARMOV AX,DATAMOV DS,AXMOV ES,AXLEA BX,TABLELEA DI,RESULTMOV AX,1234;已知的四位十进制数,以下分别求四位十进制数位,并将密码存入RESULT 中MOV SI,1000CALL NUMBERMOV SI,100CALL NUMBERMOV SI,10CALL NUMBERMOV SI,1CALL NUMBERLEA DI,RESULT;在屏幕上依次显示四位加密后的十进制数MOV CX,4NEXT:MOV DL,[DI]MOV AH,2HINT 21HINC DILOOP NEXT;按任意键退出mov ah,1int 21hMOV AX,4C00HINT 21HMAIN ENDPNUMBER PROC NEARMOV DX,0DIV SIMOV SI,DXXLATSTOSBMOV AX,SIRETNUMBER ENDPCODE ENDSEND MAIN第二份:设有100个学生的成绩存放在RECORD为首地址的字节数据区中,试编写分支程序分别统计成绩为60~69分,70~79分,80~89分,90~99分,100分的人数(假设成绩都及格),分别存放在G6,G7,G8,G9,G10单元中.data segmentrecord db 100 dub (?)g6 db 0g7 db 0g8 db 0g9 db 0g10 db 0data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea si,recordmov cx,100next:mov al,[si]cmp al,60jb nextncmp al,70jnb next7inc g6jmp nextnnext7:cmp al,80jnb next8inc g7jmp nextnnext8:cmp al,90jnb next9inc g8jmp nextnnext9:cmp al,100jnb next10inc g9jmp nextnnext10:jne nextninc g10nextn:inc siloop nextmov ah,1int 21hmov ax,4c00hint 21hcode endsend start第三份:若自BLOCK开始的内存缓冲区中,有100个带符号的十六进制数,希望找到其中最大的一个值,并将它放到MAX单元中解:程序流程图如图所示。
交通灯实验要求:以74LS273或p1口作为输出口,控制4个双色LED灯(可发红,绿,黄光)模拟交通灯管理。
按照交通灯的显示规律,相对的两个分别显示红、绿、黄。
当外部中断到来时,四个LED全部显示红色,维持1秒钟后恢复中断前的状态。
本实验是交通灯是控制实验,所以要先理解实际交通灯的变化规律.假设一个十字路口为东西南北走向.初始状态0为东西红灯,南北红灯.然后转状态1南北绿灯通车,东西红灯.过一段时间转状态,南北绿灯闪几次转两黄灯,延时几秒,东西仍然红灯,再转状态3,东西绿灯通车,南北红灯.过一段时间转状态4.东西绿灯山几次转黄灯,延时几秒,南北仍然红灯,,最后循环至状态1。
在前面内容的基础上增加允许急救车先通过的要求.有急救车到达时,两项交通信号为全红,以便让急救车通过.假定急救车通过路口时间为10秒,急救车通过后,交通恢复中断前状态.被实验已按键为终端申请,表示有急救车通过.实验原理:可以通过对P1口赋值实现状态的改变,并采用延时使状态的时间达到要求,闪烁通过多次赋值并调用短延时实现,初始状态的全红也采用此方法,特殊情况考虑用外部中断实现。
实验硬件图:实验流程图:实验程序:ORG 0000HLJMP MAINORG 0003HLJMP WINTORG 0030H MAIN:SETB EX0SETB IT0SETB EAMOV P1,#0FHLCALL LOOP LOOP:MOV P1,#96HLCALL DELAYMOV P1,#06HLCALL DELAYMOV P1,#69HLCALL DELAYMOV P1,#09HLCALL DELAYSJMP LOOP DELAY:MOV R2,#100 LOP1:MOV R3,#100 LOP0:MOV R4,#100DJNZ R4,$DJNZ R3,LOP0DJNZ R2,LOP1RETWINT:MOV P1,#0FHLCALL DELAYRETIEND。
用汇编语言实现多字节乘除法计算CPU—般都提供乘除法运算指令,不过能够直接运算的乘除法受限于CPU的字长,如MCS-51单片机是8位的,就只能计算8位二进制乘除法,也就是被乘数、乘数、被除数、除数都小于256的计算。
如果需要计算的数据较大怎么办?加减法我们还可以用先加/减低字节,再带进/借位加/减高字节的方法来计算,但乘除法这样子显然不行。
下面通过分析二进制乘法的计算特点介绍通用的部分积右移乘法运算:首先看乘法,列竖式我们都会的,二进制乘法和十进制的其实也差不多,都是按位相乘,再将各部分积错位相加,不同的是二进制乘法各位相乘时结果只有两种:乘数该位为0时乘积为0,乘数该位为1时乘积即被乘数本身。
如下图所示:10 0 1110 1X01 0 10 01 110 0 1 1 10 1100 1 11010 000 0 00 00 0 000 0 00010 10 0110 11001 1 101+0 0 000 0 00—0 1 100 1 0 1 1 1 00 11 1图1二进制乘法竖式计算过程这是一个8位二进制数乘法,过程简明易懂,但是我们怎么将这个过程转化为汇编语言程序呢?下面是根据图1竖式设计的程序流程,很容易看懂,但对于写程序来讲就比较繁琐了,对于乘数的每一位处理方法都不一样,对于每一位乘数我们都要判断它是第几位,然后它和被乘数的积要左移几位相加,这样编出来的程序冗长而且效率很低。
其实我们反过来看,乘数由低到高位每位对应的乘积依次左移一位相加,和每次乘积不动而将结果右移一位相加效果是不是一样的呢?如图3所示:积存储器清零积+被乘数左移1位 积+0积+被乘数左移2位 积+0图2乘法流程图P •磁帝c 右移F f 根据c 的数值(即報最低位)决走加o 还是加披乘数f 注意是和积的高 位相加。
然后部分积右移T2 ,以使下次和单位乘积错包相加*被乘数1 0 0 1 1 1 0 1C乘数0 0 1 0 1 0 0 1—» 1积0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0单位乘积 + 1 0 0 1 1 1 0 1部分积— 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 部分积右移0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 03.磁帯C右移一位,根据C的数值(即乘数第二位)决走加0还是加被乘数,注意是禾[1 积的高位相加。
DDA法汇编语言四个象限直线插补DDA法汇编语言四个象限直线插补程序流程图如图所示。
四个象限直线插补程序流程图#include <graphics.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>#include <math.h>int xe,ye,jvx,jvy,jrx,jry,xi,yi,jsh,lxy;/* xe、ye终点坐标jvx、jvy被积函数,jrx、jry余数寄存器xi、yi动点坐标,jsh计数长度, ,lxy象限号*/void zxcb1(); //声明第一象限直线插补函数void zxcb2(); //声明第2象限直线插补函数void zxcb3(); //声明第3象限直线插补函数void zxcb4(); //声明第4象限直线插补函数void main() //主函数{ int gd=DETECT,gm; //显示模式变量again: clrscr(); //清屏printf("L1_L4: Please input xe,ye:"); //提示输入终点坐标scanf("%d,%d",&xe,&ye); //等待输入if(xe==0&&ye==0){ printf("input error,enter any continue.");getch();goto again;} //输入错误继续输入if(xe==0&&ye>0)lxy=2; //终点为第2象限if(xe==0&&ye<0)lxy=4; //终点为第4象限if(ye==0&&xe>0)lxy=1; //终点为第一象限if(ye==0&&xe<0)lxy=3; //终点为第3象限if(xe>0&&ye>0)lxy=1; //终点为第一象限if(xe>0&&ye<0)lxy=4; //终点为第4象限if(xe<0&&ye>0)lxy=2; //终点为第2象限if(xe<0&&ye<0)lxy=3; //终点为第3象限xi=320;yi=240; //动点置屏幕中间initgraph(&gd,&gm,""); //图形显示方式jsh=0;jrx=0;jry=0;jvx=abs(xe);jvy=abs(ye);switch(lxy){ case 1: zxcb1();break; //第一象限调用插补程序函数1 case 2: zxcb2();break; //第一象限调用插补程序函数2 case 3: zxcb3();break; //第一象限调用插补程序函数3 case 4: zxcb4();break; //第一象限调用插补程序函数4 }gotoxy(10,24);printf("L%d: xe=%d,ye=%d",lxy,xe,ye); //显示终点坐标 gotoxy(10,25);printf("press any key:"); //提示按任意键 getch(); //等待按键}void zxcb1() //第一象限插补函数1{asm mov cx, xi //显示起点asm mov dx, yiasm mov ah, 0chasm mov al, 2asm int 10hagain: asm mov ax, jvx //X方向积分asm add jrx, axasm jnc next1 //无进位下asm inc xi //下正X方向进给next1: asm mov ax, jvy //Y方向积分asm add jry, axasm jnc next2 //无进位下转asm dec yi //正Y进给next2: asm mov cx, xi //显示动点asm mov dx, yiasm mov ah, 0chasm mov al, 2asm mov dx, 0100h //延时next2a: asm mov cx, 00ffhnext2b: asm dec cxasm jnz next2basm dec dxasm jnz next2aasm inc jsh //计数长度加1asm jnz again //未到终点继续}void zxcb2() //第2象限插补函数1 {asm mov cx, xi //显示起点asm mov dx, yiasm mov ah, 0chasm mov al, 2asm int 10hagain: asm mov ax, jvx //X方向积分asm add jrx, axasm jnc next1 //无进位下asm dec xi //下负X方向进给next1: asm mov ax, jvy //Y方向积分asm add jry, axasm jnc next2 //无进位下转asm dec yi //正Y进给next2: asm mov cx, xi //显示动点asm mov dx, yiasm mov ah, 0chasm mov al, 2asm int 10hasm mov dx, 0100h //延时next2a: asm mov cx, 00ffhnext2b: asm dec cxasm jnz next2basm dec dxasm jnz next2aasm inc jsh //计数长度加1asm jnz again //未到终点继续}void zxcb3() //第3象限插补函数1 {asm mov cx, xi //显示起点asm mov dx, yiasm mov ah, 0chasm int 10hagain: asm mov ax, jvx //X方向积分asm add jrx, axasm jnc next1 //无进位下asm dec xi //下负X方向进给next1: asm mov ax, jvy //Y方向积分asm add jry, axasm jnc next2 //无进位下转asm inc yi //负Y进给next2: asm mov cx, xi //显示动点asm mov dx, yiasm mov ah, 0chasm mov al, 2asm int 10hasm mov dx, 0100h //延时next2a: asm mov cx, 00ffhnext2b: asm dec cxasm jnz next2basm dec dxasm jnz next2aasm inc jsh //计数长度加1asm jnz again //未到终点继续}void zxcb4() //第一象限插补函数1 {asm mov cx, xi //显示起点asm mov dx, yiasm mov ah, 0chasm mov al, 2asm int 10hagain: asm mov ax, jvx //X方向积分asm add jrx, axasm jnc next1 //无进位下asm inc xi //下正X方向进给next1: asm mov ax, jvy //Y方向积分asm add jry, axasm jnc next2 //无进位下转asm inc yi //负Y进给next2: asm mov cx, xi //显示动点asm mov dx, yiasm mov ah, 0chasm mov al, 2asm int 10hasm mov dx, 0100h //延时next2a: asm mov cx, 00ffhnext2b: asm dec cxasm jnz next2basm dec dxasm jnz next2aasm inc jsh //计数长度加1 asm jnz again //未到终点继续}。
汇
编
语
言
实
习
报
告
xx学院
xx班
xxx
xxxxxxxx
课程题目:由键盘输任意字节数A,B,C,D,E,按式Y=A*B+C/D-E计算按正负数分别存储于数据区BUF1HE BUF2中,并将计算结果显示在屏幕上。
汇编程序设计步骤:
一.分析问题
1.已知条件:Y=A*B+C/D-E,其中A、B、C、D、E均为字节数,并由键盘输入。
2.目的要求:按式计算Yi,正负数分别存贮并将结果显示在屏幕上。
二.确定算法
1.输入方式:键盘输入
2.处理方式:DOS中断调用、数制转换、算术运算、循环等。
3.输出方式:存贮、显示
三.存储空间分配
定义堆栈段
定义数据段,其中:BUF1:存放正结果
BUF2:存放负结果
定义堆栈段
四.绘制流程图
1.总体流程图
2.字符转换数据流程图
3.转换输出子程序流程图
五、编写程序:
二、DATA SEGMENT
MARK DB 1,2,20,4,5
DB 3,4,40,5,20
DB 5,6,60,6,20
DB 1,2,20,4,20
DB 2,3,10,5,15
BUF1 DW 5 DUP(0)
BUF2 DW 5 DUP(0)
BUFM DB 10 DUP(0),'$' DATA ENDS
STACK SEGMENT STACK
DB 100 DUP(0) STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA, SS:STACK
BEGIN: MOV AX,DATA
MOV DS,AX
MOV CX,5
LEA DI , MARK
LEA SI , BUF1
AA: CALL JIS
ADD DI, 05
ADD SI, 02
LOOP AA
MOV AH, 4CH
INT 21H
JIS PROC NEAR
PUSH SI
PUSH DI
PUSH CX
PUSH BX
PUSH AX
MOV AX,0
MOV BX,0
MOV AL, [DI]
MOV BL, [DI+1]
MUL BL
CBW
MOV [SI] ,AX
MOV AX,0
MOV AL, [DI+2]
CBW
MOV BL, [DI+3]
DIV BL
CBW
ADD [SI], AX MOV BX,0
MOV BL , [DI+4]
CBW
MOV AX, [SI]
SUB AX, BX
CMP AX, 0
JL JIS1
MOV [SI] , AX
CALL OUTZH1
JMP JIS2
JIS1: MOV [BUF2], AX NEG AX
MOV BYTE PTR[BUFM] , '-' CALL OUTZH1
ADD BUF2, 2
JIS2: POP AX
POP BX
POP CX
POP DI
POP SI
RET
JIS ENDP
OUTZH1 PROC NEAR PUSH AX
PUSH BX
PUSH SI
PUSH CX
PUSH DX
MOV CX, 5
LEA SI , BUFM
ADD SI ,5
MOV DX, 0
MOV BX,10
A3: DIV BX
XCHG AX , DX
ADD AL, 30H
MOV [SI] , AL
MOV AX , DX
MOV DX ,0
DEC SI
LOOP A3
LEA DX , BUFM
MOV AH , 09H
INT 21H
POP DX
POP CX
POP SI
POP BX POP AX RET OUTZH1 ENDP CODE ENDS END BEGIN
六、实习心得:
通过汇编上机操作,将微机原理课本上的一些概念化的东西在计算机上得以体验,使得大家更加清楚8086的工作原理和各个部分的作用和原理,运行顺序等更加具体的信息。
通过汇编来实现一些更为具体,更为直观的信息和计算。
是我们能够独立自主会变出一套实用的程序。
通过理论和时间综合训练,来提升自己的汇编能力,综合以前学过编程语言和知识来最大限度发挥自己的能力。