




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
前 言汇编语言程序设在计算机科学中是一门综合性的专业基础课,是计算机专业的核心课程。它不仅是一般程序设计的基础,而且也是设计和实现编译程序、操作系统及其它系统程序和大型应用程序的重要基础。它为后续专业课程的学习打下了理论基础和实践基础。由于汇编语言程序设中有大量的指令,因此汇编语言程序设实验课在教学中占有重要的地位。通过实验可以使学生更好的巩固和掌握所学的内容,进一步增强动手能力和解决实际问题的能力。为了提高实验的效率,任课教师提前一周布置实验任务,并且进行一定的分析和讲解,要求学生进行准备工作。准备工作包括查找资料,设计算法,写出预习报告,其中预习报告包括题目的解题思想,概要设计,实现算法的源代码清单等。每次实验前,学生应向实验指导教师上交实验预习报告,预习报告经指导教师认可后方能进行实验。实验完毕写出实验报告,用A4纸打印成册(源程序存盘),由学习委员统一收齐交指导教师审阅评定。实验成绩考核:实验成绩占数据结构总评成绩的20%,其中实验效果占10分,出勤率和实验报告各占5分。有以下情形之一者,实验成绩为不及格:1. 迟到,早退,无故缺勤总共3次及以上者;2. 未按时完成实验达4次及以上者;3. 缺交实验报告3次及以上者。实验一 简单程序编制和上机过程一实验目的1 掌握计算机常用代码的软件转换技术。2 熟悉DEBUG软件的使用。3 掌握简单程序的编程方法。二实验内容 代码转换是计算机和I/O设备进行信息交换的重要技术之一。各种I/O设备所提供和接收的数据编码不尽相同。为了处理这些信息,计算机必须将各种不同编码形式的信息转换成别种适当的数据形式。例如,键盘输入的数据均为ASC码形式存储在内存中,通常要求将其转换成相应的数据形式。一般实现代码转换有两种方法:1软件法 利用CPU的算术逻辑运算功能,通过运算或查表实现各种数据代码间的转换。该方法经济但速度慢。2硬件法 利用专用代码转换集成电路进行转换。如74LS74可把BCD码转换为七段代码。这种方法需要硬件费用,但速度快。本实验要求掌握软件编码转换技术。计算机常用的代码有二进制、八进制、十六进制、BCD码、ASC码、七段码等,它们之间的相互关系如下表所示。常用数值对照表16进制数二进制码八进制码BCD码16进制码ASCII码七段码共阳共阴000000000000030H40H3FH110010001000131H79H06H20100010001032H24H5BH30110011001133H30H4FH41000100010034H 19H66H51010101010135H12H6DH61100110011036H02H7DH71110111011137H78H07H81000100038H00H7FH91001100139H18H67HA101041H08H77HB101142H03H7CHC110043H46H39HD110144H21H5EHE111045H06H79HF111146H0EH71H本次试验的内容是ASC码转换为未组合BCD码设从键盘输入十进制数的ASC码已存放在起始地址CS :150H的单元中,把它转换成未组合BCD码后,再分别存入起始地址为CS:15AH的单元中。若输入的不是十进制数的ASC码,则相应存放结果单元的内容为“FF”。提示:1组合BCD码是一位十进制数字占一个字节,高半字节为0,低半字节为该十进制数字的BCD码。ASC码转换为未组合BCD码只需减30H。2程序框图如下图所示。3程序执行前,需要在CS:150H内存缓冲区写入待转换的ASC码。方法如下:方法一:用A命令-ACS:150 DB 35,39,30,41,32CS:155 C方法二:用E 命令-ECS:150,35,39,30,41,32方法三:用F命令-FCS:150 L5 35,39,30,41,321 执行程序后检查执行结果可用D命令:-DCS:15ACS:15A 05,09,00,FF,02开始给循环计数器CX赋转换代码长度ASCII码首地址送DI错误标志“FF”送BLASCII码送AL BCD码送BL减30HCF=1?CX1=0?结束转换结果送起始地址为15AH的存储区错误标志“FF”送AL是9的ASCII码?ASC码转换为未组合BCD码的程序流程图三参考程序ORG 100HMOV CX,0005HMOV DI,150HBB: MOV BL,0FFHMOV A,DICMP AL,3AHJNB DONESUB AL,30HJB DONEMOV BL,ALDONE: MOV AL,BLMOV DI+0AH,ALINC DILOOP BBINT 20HORG 150HDB 35H,39H,30H,41H,32H四运行结果五调试分析及实验心得六源程序清单实验二 顺序结构的程序设计一实验目的1掌握计算机常用代码的软件转换技术。2进一步首席DEBUG软件的使用。3掌握简单顺序结构程序的编程方法。二实验内容本次实验的内容延续上一次实验内容,将16进制数转换为ASC码,相关内容参看上一次实验的表格。设经过CPU运算后的4位16进制数已存放在CS:150H字单元中,把它转换为ASC码后分别存入CS:15AH为起始地址的4个单元中,低位数存在低地址的字节中。提示:1十六进制数0-9H加30H即可得到ASC码,而A-FH则需要加37H,也就是加7H后再加30H,才能完成转换。因此对每一位十六进制数应先判断是0-9H的数还是AFH的数,再分别加30H和37H即可完成转换。24位数的转换需用循环程序结构。用CX作为计数器,DI作为地址指针,指向150H单元,则DI+0AH就指向结果存放单元。用逻辑右移指令使高位逐个地移至个位,用AND指令可以将个位从4位数中分离出来进行转换。MOV CL,04HSHR DX,CL两条指令使DX中的数右移4位,由于CX已用做循环控制计数器,因此右移前应将CX压栈保护,移位后再出栈恢复CX。3程序流程图如下图所示。开始CX4取4位数送DXDI指向150H加07H分离个位DXAXDI1DI存放结果加30HDX右移4位结束是09之间的数?4位转换完否?NYNY 16进制数转换为ASCII码程序流程图三参考程序ORG 100HMOV CX,0004H ;给循环计数器赋转换代码长度MOV DI,0150H ;16进制数首地址送DIMOV DX,DI ;16进制数送DXAA: MOV AX,DXAND AX,000FH ;取低四位值CMP AL,0AH ;判别是否为“0-9”数JB ASC ;是“0-9”数转ASCADD AL,07H ;是“A-F”数加7ASC ADD L,30H ;转换为ASCII码MOV DI+0AH,AL ;ASCII码送15AH单元INC DIPUSH CX ;保护循环计数器内容MOV CL,04H ;置移位次数SHR DX,CL ;16进制数右移4位POP CX ;循环计数器内容出栈LOOP AA ;(CX)0,转AAINT 20HORG 150HDW 45A7H四运行结果五调试分析及实验心得六源程序清单实验三 分支结构的程序设计一实验目的1 掌握计算机常用代码的软件转换技术。2 熟悉DEBUG软件的使用。3 掌握分支结构程序的编程方法。二实验内容本次实验的内容延续第一次实验内容,将BCD码转换为二进制码,相关内容参看第一次实验中的表格。在各种智能仪器和信息处理中,人们总习惯于十进制数来表示信息。但是绝大多数计算机没有十进制运算指令(仅有十进制调整指令)。这是因为实现十进制算术运算的硬件电路要比采用二进制算术运算的硬件电路复杂得多。例如,当两个整数进行算术运算时,对一个N进制的数需记住N(N+1)/2个“积”与“和”,当N=10时,需记住55个“积”与“和”;而当N=2时,只需记住3个。从占用存储空间来看,采用二进制数比采用十进制数要节省得多。例如,8bit表示十进制数,其数值范围为0-99,而8bit表示的二进制数则为0-255(均指无符号数)。所以,常规的方法是将输入的十进制数转换为二进制数后,再进行各种数据处理。BCD码分别为组合BCD码和未组合BCD码。组合BCD码每字节存放两位BCD数,未组合BCD码每字节只存放一位BCD数,高半字节为0。组合BCD码加、减后必须用DAA和DAS指令进行调整(乘法或除法没有调整指令)。未组合BCD码则可进行加、减、乘、除四则运算,其调整指令分别为AAA、AAS、AAM和AAD。组合BCD码转换位二进制数的算法通过实例说明于下。一个组合BCD码表示的数可以用其按权展开式表示。例如 2497=2*1000+4*100+9*10+7*1 =2*3E8H+4*64H+9*0AH+7*1H由此,逐位转换后相加便可得到结果。改用另一种表示方法,可以写成 2497=(2*10)+4)*10)+9)*10)+7而10=8+2,于是便可以采用循环结构程序来完成转换。本实验是要把两位未组合BCD码数转换成二进制数。设未组合BCD码已存放在起始地址为CS:150H的区域,把它们转换为二进制数后,再分别存入起始地址为CS:165H的区域。例如ORG 150HDB 03H,06H,08H,09H,06H,05H,02H,09H则转换后CS:165H开始的单元的内容为:CS:165H 24H,00H,59H,00H,41H,00H,1DH,00H提示:1 算法是十位*10+个位。其中的*10可以用10=8+2来实现。2 程序流程图如下图所示。开始CX设置循环次数DI指向150H十位10取BCD码十位送AL结束存放结果加上个位循环次数-10? BCD码转换为二进制码程序流程图三参考程序ORG 100HSTART: MOV CX,0004H ;给循环计数器赋转换代码长度MOV DI,150H ;BCD码首址送DIAA: MOV AL,DI ;BCD码十位数值赋ALADD AL,AL ;*2MOV BL,ALADD AL,AL ;*4ADD AL,AL ;*8ADD AL,BL ;*10INC DIMOV AH,OOHADD AL,DI ;BCD码十位和个位相加,转换结束MOV DI+14H,AX ;转换结果存起始地址165H单元INC DILOOP AA ;(CX)0INT 20HORG 150HDB 03H,06H,08H,09H,06H,05H,02H,09H 四运行结果五调试分析及实验心得六源程序清单实验四 循环结构的程序设计一实验目的1学习并掌握数据传送指令和算术运算指令的用法。2熟悉PC机上建立、汇编、链接和运行8088汇编语言程序的过程。3掌握循环结构程序的编写方法。二实验内容将两个多位十进制数相加,并在屏幕上显示加数、被加数以及和。已知被加数和加数均以ASCII码的形式存放在DATA1和DATA2为首的单元中(低位位于低地址),结果送回DATA1处。编程提示1因被加数和加数均以ASCII码形式存放,所以在相加必须转化为BCD码,此时用未组合BCD码最适宜。未组合BCD码相加要用到AAA加法调整指令。2显示数据可用2号DOS功能调用。3程序流程图如下图所示。显示被加数和加数ASCII16进制数计数值CX清除最低位进位执行带进位加ADCAAA调整结果送被加数区调整偏移量CX-1=0?16进制结果ASCII码显示结果结束YN 多位十进制数相加程序流程图三参考程序CRLF MACR0 ;建立宏指令CRLF MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21H ENDMDATA SEGMENTDATA1 DB 33H,39H,31H,37H,34HCOUNT EQU $-DATA1DATA2 DB 36H,35H,30H,38H,32HDATA ENDSSTACK SEGMENT STACD STACK DB 20 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART:MOV AX,DATA MOV DS,AX MOV SI,OFFSET DATA2MOV BX,COUTNCALL DISPL ;显示被加数CRLFMOV SI,OFFSET DATA1MOV BX,COUNT ;显示加数CALL DISPLCRLFMOV DI,OFFSET DATA2CALL ADDA ;加法运算MOV SI,OFFSET DATA1MOV BX,COUNTCALL DISPL ;显示结果CRLFMOV AX,4C00HINT 21HDISPL PROC NEAR ;显示子程序DIS: MOV AH,02H MOV DL,SI+BX-1 ;显示字符串中一字符INC 21H DEC BX ;修改偏移量JNZ DS1RETDISPL ENDPADDA PROC NEAR MOV DX,SIMOV BP,DIMOV BX,COUNTAD1: SUB BYTE PTRSI+BX-1,30H SUB BYTE PTRDI+BX-1,30HDEC BX ;将ASCII码数字串转化为十进制色数字串JNZ AD1MOV SI,DXMOV DI,BPMOV CX,COUNTCLCAD2: MOV AL,SI ADC AL,DIAAA ;非组合BCD码的加法调整MOV SI,AL ;结果送被加数区INC SIINC DI ;指向下一位LOOP AD2MOV SI,DXMOV DI,BPMOV BX,COUNTAD3: ADD BYTE PTRSI+BX-1,30H ADD BYTE PTRDI+BX-1,30H ;十进制数字串转为ASCII码表示的数据串DEC BXJNZ AD3RETADDA ENDPCODE ENDS END START 四运行结果五调试分析及实验心得六源程序清单实验五 子程序设计和调用一实验目的1通过程序调试,观察子程序调用及嵌套过程,进一步理解CALL指令和RET指令的功能。2掌握子程序(或过程)调用时参数传递的方法。二实验内容调试程序PCS5_1.ASM,使实现函数y=(a+b)2(a和b均为0-65535之间的值),并在屏幕上显示y的值(十六进制形式)。;PCS5-1.ASM TO BE DEBUGEDDATA SEGMENTA DW 125B DW 90Y DW 2 DUP(0)Z DW 0,0DATA ENDSSTA SEGMENT STACK STACK DW 50 DUP(S) STA ENDS CODE SEGMENT ASSUME CS:CDOE,DS:DATA,SS:STA STAR PROC FAR PUSH DS ;保存PSP首地址 XOP AX,AX MOV AX,A MOV Z,AX MOV Z+2,AX CALL MLT ;求A的平方 MOV AX,B MOV Z,AX MOV Z+2,AX CALL MLT ;求B的平方 MOV AX,A MOV Z,AX MOV AX,B MOV Z+2,AX CALL MLT ;求A*B ADD Y,AX ADC Y+2,DX ;再加一个A*B ADC Y+4,0CALL DSP6 ;显示6位数RET STAR END MLT PROC ;Z和Z+2字单元内容相乘 MOV AX,ZMOV BX,Z+2 MUL BX ADD Y,AXADC Y+2,DXADC Y+4,0RET MLT ENDP DSP6 PROC ;显示6字节结果LEA SI,Y ADD SI,5 MOV CX,6 L1: MOV AL,BYTE PTRRCALL DSPAL DEC SI LOOP L1RET DSP6 ENDPDSPAL PROC ;显示ALPUSH AX ;保护寄存器PUSH BXPUSH CXPUSH DXMOV BH,AL ;暂存与BHMOV BL,2MOV CL,4SHR AL,CL G1: CMP AL,10JGE G2OR AL,30HJMP G3G2: ADD AL,37HG3: MOV DL,AL ;CRT显示 MOV AH,2 INT 21H DEC BL JZ G4 MOV AL,BH ;再处理低4位 AND AL,0FH JMP G1G4: POP DXPOP CX POP BXPOP AXRETDSPAL ENDPCODE ENDS END程序调试通过后,在DEBUG环境下观察CALL和RET指令执行时堆栈指针的变化及堆栈中压入和弹出的内容。三运行结果四调试分析及实验心得 五源程序清单实验六 DOS功能调用一实验目的掌握常用的DOS功能调用。二实验内容编程完成多位十进制与一位十进制数的乘法运算,并在屏幕上显示乘积。已知被乘数和乘数均以ASCII码形式存放在内存中,并且低位数存放在低地址。1十进制数的乘法,必须在乘法指令后用AAM指令进行调整。多位十进制数乘一位十进制数,必须把每一位乘法运算的部分积加至结果(乘积)单元,十进制数相加还必须用AAA指令进行调整。下面以两位数乘一位数说明其运算过程。DATA1 DB 38H, 35H ;58(被乘数)DATA2 DB 39H ;9(乘数)RESULT DB 3DUP(0)先乘个位。08H09H后,AX0048H;经AAM调整后AX=0702H。这个部分积加至乘积单元,因此RESULT单元内容为:02H,07H,00H。再乘十位。05H09H后,AX002DH;经AAM调整后AX=0405H。AX=0405H。AX这个部分积应加至乘积单元的十位:05H07H,AL中得到0CH,经AAA指令调整,AL加6并将高四位清零变成02H,AH则加1变成05H,于是AX0502H。低字节02H应放入结果的十位,高字节05H
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业旅游示范区开发策略
- 工业污染源控制与环境保护措施
- 工业机器人技术应用与展望
- 工业自动化中图像处理与机器视觉的结合
- 工业生产中的能源管理与节能技术
- 工业物联网的发展与挑战分析
- 工业自动化中的机器学习技术探讨
- 工业遗址改造为现代商业街区的实践案例
- 工业自动化技术及其应用前景
- 工业设计与文化产品创新设计
- 第五单元《面积》(教学设计)-【大单元教学】三年级数学下册同步备课系列(人教版)
- 阅读认知策略的跨学科研究框架构建
- 掼蛋考试试题及答案
- GA/T 2159-2024法庭科学资金数据清洗规程
- DB63-T 2129-2023 盐湖资源开发标准体系
- 企业风险管理-战略与绩效整合(中文版-雷泽佳译)
- 业务学习踝关节骨折
- 实景演出制作合同协议
- 迅镭激光切割机操作培训
- JJF 2241-2025电子停车计时收费表校准规范
- 人文关怀示范病房工作分享课件
评论
0/150
提交评论