欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    8086汇编语言程序设计.pptx

    • 资源ID:73644863       资源大小:189.38KB        全文页数:56页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    8086汇编语言程序设计.pptx

    几个概念汇编语言汇编语言源程序汇编汇编程序第1页/共56页41 8086汇编语言的语句 汇编语言由指令性语句和指令性语句组成一、指令性语句格式标号:操作码操作数1,操作数2;注释二、指示性语句格式标识符(名字)指示符(伪指令)表达式三、有关属性存储器操作数的属性有三种:段值、段内偏移量和类型。第2页/共56页42 8086汇编中的伪指令一、符号定义语句1、等值语句格式:符号名EQU表达式例:PORT EQU1234BUFFEQUPORT58MEMEQUDS:BP20HCOUNTEQUCXABCEQUAAA第3页/共56页2、等号语句格式:NUM34NUM341第4页/共56页二、变量定义语句格式:符号名DB/DW/DD表达式第5页/共56页1、定义一组数据例1:BUFFDW1234H,0ABCDH,8EHDW79DH,7B6AH2、定义一串字符例2:STRDBWelcome!3、定义保留存储单元例3:SUMDW?,?第6页/共56页4、复制操作复制操作符DUP(Duplication)可预置重复的数值例4:ALL_ZERODB0,0,0,0,0用复制操作可改为:ALL_ZERODB5DUP(0)5、将已定义的地址存入内存单元例5:LITDDCYCCYC:MOVAX,BX第7页/共56页三、段定义语句1、段定义语句格式:段名SEGMENT定位类型组合类型类别段名ENDS只需要掌握段名SEGMENT段名ENDS第8页/共56页2、段假设语句ASSUME段寄存器名:段名,3、ORG伪指令与地址计数器$ORG伪指令格式:ORG4、PUBLIC和EXTRN伪指令第9页/共56页四、过程定义语句过程名PROCNEAR/FARRET过程名ENDP第10页/共56页43 8086汇编中的运算符 一、常用运算符1、算术运算符 (加)、(减)、*(乘)、/(除)、MOD(求余)。2、逻辑运算符AND、OR、XOR、NOT第11页/共56页3、关系运算符EQ(相等)、NE(不等、)LT(小于)、GT(大于)、LE(小于等于)、GE(大于等于)。例:MOV DL,10H LT 16 例:AND AX,555 GT 222第12页/共56页二、常用的操作符4、分析操作符1)SEG操作符例:MOV AX,SEG BUFF2)OFFSET操作符 例:MOV BX,OFFSET BUFF第13页/共56页3)TYPE操作符 对于变量有3种:1 字节型;2 字型;4 双字型;对于标号有2种:1 NEAR(段内),2 FAR(段间)。例:BUFF DB 20H MOV BX,OFFSET BUFF MOV BX,01第14页/共56页4)LENGTH操作符5)SIZE操作符SIZETYPELENGTH例:BUFF DB 10DIP(?)MOV CX,LENGTH BUF MOV CX,10 MOV CX,SIZE BUF MOV CX,20第15页/共56页5、综合运算符(合成操作符)1)PTR运算符格式:类型PTR表达式例:INC WORD PTR BX 2)THIS操作符格式:THIS类型(或属性)例:FIRST EQU THIS BYTE SECOND DW 100 DUP (?)第16页/共56页44汇编语言程序设计 常用的汇编语言程序框架:DATA SEGMENT;定义数据段VAL1 DB 12H,8EH ;定义变量 DATA ENDS ;数据段结束 CODE SEGMENT;定义代码段 ASSUME DS:DATA,CS:CODE;段属性说明 START:MOV AX,DATA;初始化DS MOV DS,AX MOV AX,4C00H;返回DOS INT 21H CODE ENDS ;代码段结束 END START ;源程序结束第17页/共56页一、汇编语言程序设计基本步骤分析问题绘制流程图编写程序检查和调试二、汇编语言程序的基本结构第18页/共56页1、顺序结构第19页/共56页2、分支结构第20页/共56页3、循环结构第21页/共56页第22页/共56页4、子程序Call proc1ret第23页/共56页45 宏定义与宏调用 1、宏定义宏指令名MACROENDM2、宏调用宏指令名实元表第24页/共56页例:MULTYMACROOPR1,OPR2,RESULT;宏定义PUSHAXMOVAL,OPR1MOVAH,OPR2IMULOPR2MOVRESULT,AXPOPAXENDMDATASEGMENTXXDB12YYDB34ZZDW?MULTYXX,YY,ZZ;宏调用,实参替代虚参第25页/共56页4.6汇编语言程序设计实例 1、算术运算例题例1:在偏移首地址为ARRAY的内存储区,有100个字型数据,要求将数组的每个元素加1,试编写汇编语言程序完成该要求。DATASEGMENTARRAYDW100DUP(?);定义100个字型随机数DATAEDNSCODESEGMENTASSUMEDS:DATA,CS:CODE第26页/共56页 LEA BX,ARRAY ;设数组首地址指针 MOV CX,LENGTH ARRAY ;数组数据长AA1:INC WORD PTR BX,1 ;指定为字型数加1 ADD BX,2 ;移动地址指针 LOOP AA1 ;循环操作 完整程序请参看教材第27页/共56页例2:有两个无符号字节型数组,设数组元素个数相等,编程将数组中的对应元素相加,结果存入另一内存区。DATA SEGMENTM1DB20DUP(?)M2DB20DUP(?)M3DW20DUP(0)DATAENDSCODESEGMENT第28页/共56页LEASI,M1;设数组1的地址指针LEADI,M2;设数组2的地址指针LEABX,M3;设结果区的地址指针MOVCX,20AA1:MOVAL,SIADDAL,DIMOVBX,ALADCBYTEPTRBX+1,0;存结果的进位INCSIINCDIADDBX,2LOOPAA1第29页/共56页2、逻辑处理题例1:将寄存器AL中高、低4位交换MOVAL,0ABH MOVCL,4 ROLAL,CL;移出位补充移空位4次第30页/共56页例2:将AX中的内容按相反顺序存入BX中MOVAL,1234H MOVCX,16AA1:SHLAX,1;移出的位进到CF RCRBX,1;AX中移出的位进入BX LOOPAA1第31页/共56页3、代码转换例题例1:编程将以$结束的字符串中的小写字母改为大写字母。DATASEGMENTSTRDBheLLo,eveRyboBY!,$DATAENDS第32页/共56页LEABX,STRA1:MOVAL,BX CMPAL,$;是$符,则结束 JEDONE CMPAL,a JBNEXT;低于,则为大写字母 CMPAL,z JANEXT;高于,则不是字母 SUBAL,20H;将小写字母改为大写 MOVBX,ALNEXT:INCBX JMPA1第33页/共56页例2:十六进制数到十进制数的转换。除10取余法第34页/共56页MOVAX,4B6CHMOVCX,0;统计除法次数MOVBX,10;A1:MOVDX,0;被除数扩展为32位DIVBXPUSHDX;将转换好的数存入堆栈INCCXORAX,AX;转换直到商为0JNZA1第35页/共56页4、表格处理题例1:编程序将09的数字转换成所要求的密码明码和密码的映射关系为:01234567892716908345DATASEGMENTTABLEDB2,7,1,6,9,0,8,3,4,5;密码表VAL1DB8,4,1,7,5;被加密码(明码)VAL2DB5DUP(?)DATAENDS第36页/共56页MOVSI,OFFSETVAL1MOVDI,OFFSETVAL2MOVCX,5LEABX,TABLE;表格首地址指针A1:MOVAL,SI;取明码XLAT;转换为密码MOVDI,ALINCSIINCDILOOPA1第37页/共56页6、按数据大小排序题例1:编程序实现,从一串带符号字型数据中找出最大值。DATASEGMENTBLOCK DW 762EH,6A8BH,664AH,0B945H,85DHCOUNTEQU($BLOCK)2DATAENDS第38页/共56页LEASI,BLOCKMOVCX,COUNTMOVAX,SI;取第1个数DECCX;准备与下个数比较AA1:ADDSI,2CMPAX,SI;与下个数比较JGAA2;前一个数大,则保留下次再比MOVAX,SI;否则,取后一个数下次再比AA2:LOOPAA1第39页/共56页4.7 DOS功能调用与子程序设计 调用过程为:DOS功能调用号送AH寄存器;如果需要,按要求给定输入参数(有的不需要输入参数);写入中断指令INT21H。调用结束,按功能使用其输出参数。第40页/共56页1、单字符输入1号功能:从键盘输入1个字符输入参数:无输出参数:AL=ASCII码第41页/共56页2、单字符输出2号功能:在屏幕上显示1个字符(ASCII码)输入参数:DL=ASCII码输出参数:无例:从键盘输入两个1位十进制数,求两数之和并在屏幕上显示结果。第42页/共56页 MOVAH,1;DOS调用输入第一个数INT21HMOVBL,AL;保存输入的第一个数MOVAH,1INT21HADDAL,BL;两个ASCII码相加AAA;调整加法结果为非压缩BCD数MOVDL,ALADDDL,30H;加法结果转换成ASCII码MOVAH,2;DOS调用输出到屏幕INT21H第43页/共56页3、多字符输入0AH功能:多个字符输入到缓冲区输入参数:DS:DX=输入缓冲区首地址输出参数:DS:DX=输入字符串所在缓冲区地址第44页/共56页 4、多字符输出9号 功 能:多个字符输出到屏幕显示 输入参数:DS:DX=输出字符缓冲区首地址 输出参数:无例1:在屏幕上显示一串字符。DATASEGMENTBUFFDBHowdoyoudo?,0DH,0AH,$DATAENDS 第45页/共56页 CODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXLEADX,BUFFMOVAH,9INT21H第46页/共56页5、单字符输入/输出6号 6号DOS功能实际上是1号和2号功能的组合,当DL寄存器的内容为0FFH时,6号功能与1号功能同,即从键盘输入单个字符;而当DL寄存器中放入字符的ASCII值,它就是2号功能。第47页/共56页6、过程终止4CH号 该调用的功能是结束当前程序,并返回调用它的程序,如在DEBUG状态下运行,则返回DEBUG;如果在DOS下运行,则返回DOS。在汇编语言程序结束处放上MOV AX,4C00H和INT 21H两条指令,以利于程序执行完毕,返回操作系统控制。第48页/共56页7、子程序设计设计子程序要提供以下信息:子程序的功能调用时需要的输入参数(入口参数)调用后提供的输出参数(出口参数)子程序中所使用的寄存器(以便调用前做必要的保护)第49页/共56页例1:编写一子程序,完成一个2位十六进制数到对应的ASCII码的转换。子程序名:CONHA功能:将2位十六进制数转换成对应的ASCCII码输入参数:AL待转换的数输出参数:BX转换好的ASCII码使用寄存器:AL、AH、BX、CL第50页/共56页CONHA PROCFARMOVAH,AL;保存待转换的数ANDAL,0FH;处理十六进制数低位CMPAL,0AH;是16进制中的字母吗?JBASC1;否,转移ADDAL,07;是,先加7ASC1:ADDAL,30H;转换为ASCII码MOVBL,AL;保存转换好的低位MOVCL,4;移位控制SHRAH,CL;将原数右移,处理高位CMPAH,0AH;是16进制中的字母吗?JBASC2;否,转移ADDAH,07;是,先加7ASC2:ADDAH,30HMOVBH,AH;保存转换好的高位RETCONHAENDP第51页/共56页例2:用子程序调用形式,编写从键盘输入4位16进制数的程序。子程序名:ZH功 能:检查键盘输入错误,将键入值转换成16进制数输入参数:AL输出参数:AL 使用寄存器:BX,CX第52页/共56页 CODE SEGMENT ASSUME CS:CODE START:MOV CX,4 ;输入4次 MOV DX,CX ;转换4次 MOV BX,0 ;用BX保存输入数 RE1:MOV AH,1 ;从键盘输入 INT 21H CALL ZH ;通过子程序转换 SHL BX,CL ;组合成16进制数第53页/共56页ADD BL,AL DEC DX JNZ RE1 ;循环输入4个数 MOV AX,4C00H INT 21H第54页/共56页ZH PROC CMP AL,9 ;将ASCII码转换为16进制 JBE A2 ;键入值9(0-9)则减30H CMP AL,a ;键入值a(A-F)则减37H JB A1 SUB AL,20H ;值在a-f则先减20H,再减37HA1:SUB AL,7A2:SUB AL,30H RETZH ENDPCODE ENDS END START第55页/共56页谢谢大家观赏!第56页/共56页

    注意事项

    本文(8086汇编语言程序设计.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开