收藏 分销(赏)

-高级汇编语言技术.ppt

上传人:二*** 文档编号:12816971 上传时间:2025-12-10 格式:PPT 页数:39 大小:323.04KB 下载积分:5 金币
下载 相关 举报
-高级汇编语言技术.ppt_第1页
第1页 / 共39页
本文档共39页,全文阅读请下载到手机保存,查看更方便
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第七章 高级汇编语言技术,汇编,语言,宏,汇编,重复汇编,条件汇编,主要内容:,汇编,语言,1.宏汇编,宏,:,源程序中一段有独立功能的程序代码。,宏指令,:,用户自定义的指令。在编程时,将多次,使用的功能用一条宏指令来代替。,汇编语言程序,指令,伪指令(伪操作),宏指令,汇编,语言,宏展开:,汇编程序把,宏调用,展开,宏定义:,macro_name,MACRO,哑元表,;,形参/虚参,LOCAL,标号表,;,宏定义体,ENDM,宏调用:,(必须先定义后调用),macro_name,实元表,;,实参,汇编,语言,例:保存寄存器,宏展开:,1 push ax,1 push bx,1 push cx,1 push dx,1 push si,1 push di,宏定义:,savereg,MACRO,push ax,push bx,push cx,push dx,push si,push di,ENDM,宏调用:,savereg,汇编,语言,例:两个字相乘,宏定义:,multiply,MACRO,opr1,opr2,result,push dx,push ax,mov ax,opr1,imul opr2,mov result,ax,pop ax,pop dx,ENDM,宏调用:,multiply,cx,var,xyzbx,宏展开:,1 push dx,1 push ax,1 mov ax,cx,1 imul,var,1 mov,xyzbx,ax,1 pop ax,1 pop dx,汇编,语言,例:求绝对值,宏定义:,absol,MACRO,oper,LOCAL next,cmp oper,0,jge,next,neg oper,next:,ENDM,宏调用:,absol var,absol bx,宏展开:,1 cmp var,0,1 jge,?0000,1 neg var,1,?0000,:,1 cmp bx,0,1 jge,?0001,1 neg bx,1,?0001,:,汇编,语言,宏汇编操作符:,%,符号1&符号2,宏展开时,合并前后两个符号形成一个符号。,;注释,宏展开时,,;,后面的注释不予展开。,%,表达式,汇编程序将,%,后面的表达式转换为数字,并在展开期间用这个数取代哑元。,汇编,语言,leap,macro,cond,lab,j,&,cond lab,endm,宏定义:,宏调用:,leap z,there,leap nz,here,宏展开:,1 jz there,1 jnz here,汇编,语言,宏定义:,msg,macro,lab,num,xyz,lab,&,num db HELLO MR.,&,xyz,endm,宏调用:,msg ary,1,wang,msg ary,2,zhang,宏展开:,1 ary1 db HELLO MR.wang,1 ary2 db HELLO MR.zhang,汇编,语言,msg macro lab,num,xyz,lab,&,num db Hello MR.,&,xyz,endm,data segment,msg ary,1,wang,msg ary,2,zhang,data ends,汇编,语言,msg macro lab,num,xyz,lab,&,num db Hello,&,MR.,&,xyz,endm,data segment,msg ary,1,wang,msg ary,2,zhang,data ends,汇编,语言,msg macro lab,num,xyz,lab,&,num db Hello MR.,&,xyz,&,endm,data segment,msg ary,1,wang,msg ary,2,zhang,data ends,汇编,语言,msg macro lab,num,xyz,lab,&,num db Hello MR.xy,&,z,&,endm,data segment,msg ary,1,wang,msg ary,2,zhang,data ends,汇编,语言,msg macro lab,num,xyz,&,lab,&,num,&,db Hello MR.,&,xyz,endm,data segment,msg ary,1,wang,msg ary,2,zhang,data ends,汇编,语言,msg macro lab,num,xyz,la,&,b,&,num db Hello MR.,&,xyz,endm,data segment,msg ary,1,wang,msg ary,2,zhang,data ends,汇编,语言,msg macro lab,num,xyz,la,&,b,&,n,&,um db Hello MR.,&,xyz,endm,data segment,msg ary,1,wang,msg ary,2,zhang,data ends,汇编,语言,宏定义:,msg macro,count,string,msg,&,count db string,endm,errmsg,macro,text,cntr=cntr+1,msg%,cntr,text,endm,宏调用:,cntr=0,errmsg SYNTAX ERROR,errmsg INVALID OPERAND,宏展开:,1 cntr=cntr+1,1 msg%cntr,SYNTAX ERROR,2 msg1 db SYNTAX ERROR,1 cntr=cntr+1,1 msg%cntr,INVALID OPERAND,2 msg2 db INVALID OPERAND,汇编,语言,列表伪操作:,.LALL,:,在,LST,清单中列出宏展开后的全部语句(包括注释)。,.SALL,:,在,LST,清单中不列出任何宏展开后的语句。,.XALL,:,省略的列表方式,只列出产生目标代码的语句。,汇编,语言,宏库的建立与调用:,;MACRO.MAC,macro1,MACRO,哑元表,ENDM,macro2,MACRO,哑元表,ENDM,macroN,MACRO,哑元表,ENDM,;EXP.ASM,include 路径,MACRO.MAC,macro1,实元表,macro2,实元表,macroN,实元表,purge,macroN,汇编,语言,宏调用与子程序调用的区别:,子程序,:在程序执行期间被调用,只占用自身大小的,一段空间。,宏调用,:在汇编期间被展开,每调用一次就把宏定义,体展开一次,。,汇编,语言,主程序,call sub1,call sub1,call sub1,子程序,sub1,ret,汇编,语言,宏定义:,Q macro x,y,endm,宏调用:,Q a,b,Q c,d,Q e,f,宏展开:,汇编,语言,子程序:,优点:模块化,节省内存,可被多次调用,编程效率高。,缺点:额外开销(保存返回地址,计算转向地址,传递,参数等)大,增加了执行时间。适于子功能代码,较长、调用比较频繁的情况。,宏调用:,优点:参数传送简单,执行效率高。,缺点:不节省空间,适于子功能代码较短、传参较多的,情况。,汇编,语言,重复伪操作,REPT,REPT,表达式,;重复块,ENDM,2.重复汇编,用于连续产生完全相同或基本相同的一组代码。,不定,重复伪操作,IRP,/,IRPC,IRP,哑元,,;重复块,ENDM,IRPC,哑元,字符串,;重复块,ENDM,汇编,语言,例:,把字符A到Z的ASCII码填入数组TABLE,CHAR=A,TABLE LABEL BYTE,REPT,26,DB CHAR,CHAR=CHAR+1,ENDM,1 DB 61H,1 DB 62H,1 DB 63H,1 DB 7AH,汇编后:,汇编,语言,例:,;宏定义,PUSH_TAB,MACRO,K,PUSH TAB+k,ENDM,;宏调用,I=0,REP,5,PUSH_TAB%I,I=I+2,ENDM,;宏展开,2 PUSH TAB+0,2 PUSH TAB+2,2 PUSH TAB+4,2 PUSH TAB+6,2 PUSH TAB+8,汇编,语言,例:,ARRAY LABEL WORD,REPT,7,DW$+2,ENDM,DW ARRAY,1 DW$+2,1 DW$+2,1 DW$+2,1 DW$+2,1 DW$+2,1 DW$+2,1 DW$+2,DW ARRAY,汇编后:,汇编,语言,IRP,REG,PUSH REG,ENDM,1 PUSH AX,1 PUSH BX,1 PUSH CX,1 PUSH DX,汇编后:,例:,array label byte,IRPC,K,12345,db NO.&K,ENDM,1 db NO.1,1 db NO.2,1 db NO.3,1 db NO.4,1 db NO.5,汇编后:,汇编,语言,3.条件汇编,根据,条件,把一段源程序包括在汇编语言程序内或者排除在外。,IF,自变量,;,为条件,;,自变量满足条件则汇编此块,ELSE,;,自变量不满足条件则汇编此块,ENDIF,一般,格式:,汇编,语言,IF 表达式,IFE,表达式,IF1,IF2,IFDEF 符号,IFNDEF 符号,IFB ,IFNB ,IFIDN ,IFDIF ,汇编,语言,例:求最大值放入AX,宏定义:,MAX,MACRO,K,A,B,C,LOCAL NEXT,OUT,MOV AX,A,IF,K-1,IF,K-2,CMP C,AX,JLE NEXT,MOV AX,C,ENDIF,NEXT:CMP B,AX,JLE OUT,MOV AX,B,ENDIF,OUT:,ENDM,1 MOV AX,P,1?0002:CMP Q,AX,1 JLE?0003,1 MOV AX,Q,1?0003:,宏展开:,1 MOV AX,P,1?0001:,1 MOV AX,P,1 CMP R,AX,1 JLE?0004,1 MOV AX,R,1?0004:CMP Q,AX,1 JLE?0005,1 MOV AX,Q,1?0005:,宏调用:,MAX 1,P,MAX 2,P,Q,MAX 3,P,Q,R,汇编,语言,;宏展开,1,SAL AX,1,2,SAL AX,1,3,SAL AX,1,例:宏定义的递归调用,;宏定义,POWER,MACRO,X,N,SAL X,1,CNT=CNT+1,IF CNT-N,POWER,X,N,ENDIF,ENDM,;宏调用,CNT=0,POWER,AX,3,汇编,语言,mov ax,dividend,mov bx,divisor,sub cx,cx,comp:,cmp ax,bx,jb out,sub ax,bx,inc cx,jmp comp,out:,mov quotient,cx,endm,divide,macro,dividend,divisor,quotient,local comp,out,cnt=0,ifndef,dividend,cnt=1,endif,ifndef,divisor,cnt=1,endif,ifndef,quotient,cnt=1,endif,if,cnt,exitm,endif,例:,汇编,语言,divide macro,dividend,divisor,quotient,local comp,out,cnt=0,ifndef,divdend,cnt=1,endif,ifndef divisor,cnt=1,endif,ifndef quotient,cnt=1,endif,if cnt,exitm,endif,macro.inc,汇编,语言,include macro.inc,data segment,aa dw 100,bb dw 25,cc dw?,data ends,code segment,main proc far,assume cs:code,ds:data,start:,mov ax,data,mov ds,ax,.lall,divide aa,bb,cc,mov ax,4c00h,int 21h,main endp,code ends,end start,汇编,语言,movif,macro,tag,ifidn,rep movsb,exitm,endif,ifidn,rep movsw,exitm,endif,ifb,rep movsb,endif,endm,例:,宏定义,macro1.inc,汇编,语言,include macro1.inc,code segment,main proc far,assume cs:code,start:,movif b,movif w,movif,mov ax,4c00h,int 21h,main endp,code ends,end start,汇编,语言,if1,include macro1.inc,endif,code segment,main proc far,assume cs:code,start:,movif b,movif w,movif,movif a,movif B,mov ax,4c00h,int 21h,main endp,code ends,end start,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服