chap程序设计方法实用实用教案

上传人:桔**** 文档编号:569972121 上传时间:2024-08-01 格式:PPT 页数:119 大小:2.14MB
返回 下载 相关 举报
chap程序设计方法实用实用教案_第1页
第1页 / 共119页
chap程序设计方法实用实用教案_第2页
第2页 / 共119页
chap程序设计方法实用实用教案_第3页
第3页 / 共119页
chap程序设计方法实用实用教案_第4页
第4页 / 共119页
chap程序设计方法实用实用教案_第5页
第5页 / 共119页
点击查看更多>>
资源描述

《chap程序设计方法实用实用教案》由会员分享,可在线阅读,更多相关《chap程序设计方法实用实用教案(119页珍藏版)》请在金锄头文库上搜索。

1、5.1.1汇编语言程序设计的一般汇编语言程序设计的一般(ybn)步骤步骤汇编语言程序设计一般有以下几个步骤:1分析问题,确定算法(sunf)数据段、变量等2绘制流程图3根据流程图编制程序4调试程序第1页/共118页第一页,共119页。5.1.2流程图流程图1流程图的概念流程图是由特定的几何图形、指向线、文字说明来表示数据处理的步骤,形象描述逻辑控制结构以及数据流程的示意图。流程图具有(jyu)简洁、明了、直观的特点。2流程图符号表示流程图符号表示(1)起止框:表示程序的)起止框:表示程序的开始开始(kish)和结束。和结束。起止起止(q zh)框框第2页/共118页第二页,共119页。(2)判

2、断(pndun)框(3)处理)处理(chl)框框 (4)调用)调用(dioyng)框框 第3页/共118页第三页,共119页。(5)指向(zhxin)线(6)连接)连接(linji)框框 第4页/共118页第四页,共119页。5.2顺序程序设计(shj)下面举例说明顺序程序的设计。【例】试编写一程序计算以下表达式的值。=(v-(*+-540)/x式中x、v均为有符号字数据。设 x, y, z, v 的 值 存 放 在 字 变 量(binling)、V中,结果存放在双字变量(binling)之中,程序的流程图如图5.1所示。第5页/共118页第五页,共119页。图图5 5. .1 1 顺顺序序运

3、运算算( (y y n n s su u n n) )程程序序流流程程图图=(v-(*+-540)/x第6页/共118页第六页,共119页。DATA SEGMENTXDW200YDW100ZDW3000VDW10000WDW2DUP(?)DATA ENDSCODE SEGMENTASSUMEDS:DATA,CS:CODE第7页/共118页第七页,共119页。MIANPROCFARSTART:MOVAX,DATAMOVDS,AX;DATAAXMOVAX,XIMULY;(X)*(Y)DX:AXMOVCX,AXMOVBX,DX;(DX:AX)(BX:CX)MOVAX,ZCWD;(Z)符号(fho)扩

4、展第8页/共118页第八页,共119页。CWD;(V)符号(fho)扩展SUBAX,CXSBB DX, BX; (DX:AX)-(BX:CX)(DX:AX)DIVX;(DX:AX)/XADD CX,AXADC BX,DX;(BX:CX)+(DX:AX)(BX:CX)SUB CX,540SBB BX,0;(BX:CX)-550(BX:CX)MOV AX,V 第9页/共118页第九页,共119页。MOV W,AX;商WMOV W+2,DX;余数DXW+2MOV AH,4CHINT21HMIAN ENDPCODEENDS;退出(tuch)DOS 状态END START第10页/共118页第十页,共1

5、19页。【例】已知某班学生的英语(yny)成绩按学号(从1/0开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变 量 NO中 , 查 表 结 果 放 在 变 量ENGLISH中。编写程序如下:第11页/共118页第十一页,共119页。STACKSEGMENTSTACKDB200DUP(0)STACKENDSDATA SEGMENTTABDB80,85,86,71,79,96DB83,56,32,66,78,85NODB10ENGLISTDB?DATA ENDS第12页/共118页第十二页,共119页。CODE SEGMENTASSUMEDS:DATA,SS:STACK,CS:CODE

6、MAINPROCFARBEGIN:MOV AX,DATAMOVDS,AXLEABX,TABMOVAL,NO80858510-TABNOENGLIST第13页/共118页第十三页,共119页。DEL ALXLATTABMOV ENGLISH,ALMOVAH,4CHINT 21HMAIN ENDPCODEENDSEND BEGIN80858510-TABNOENGLIST第14页/共118页第十四页,共119页。5.3循环(xnhun)程序设计5.3.1循环程序的结构( jigu)5.3.2单重循环程序设计5.3.3多重循环程序设计第15页/共118页第十五页,共119页。5.3.1循环程序循环程

7、序(chngx)的结构的结构1初始化部分2循环(xnhun)体部分3循环(xnhun)控制部分LOOP指令条件转移指令第16页/共118页第十六页,共119页。循环(xnhun)常见结构如图所示。第17页/共118页第十七页,共119页。5.3.2单重循环单重循环(xnhun)程序设计程序设计1计数控制已知循环次数类似FOR语句2条件控制通过(tnggu)某条件控制如:当某数不为零时循环类似WHILE语句第18页/共118页第十八页,共119页。【例】试编一程序(chngx),把BX寄存器内的二进制数用十六进制的形式在屏幕上显示出来1.四位一组转换成十六进制四位一组转换成十六进制1101010

8、1B=D5H2.在屏幕上显示时,要使用在屏幕上显示时,要使用ASCII码码要显示要显示D5必须转成必须转成 44H 35H3.分离十六进制的每一位,先输出最高位分离十六进制的每一位,先输出最高位4.使用使用DOS功能功能(gngnng)调用调用 02功能功能(gngnng) 要输入的字符的要输入的字符的ASCII码存入码存入DL中,中,功能功能(gngnng)号送号送AH中中MOV DL,S MOV AH,02 INT 21H第19页/共118页第十九页,共119页。1101 0101 0000 011000111101 00110101 00110000 00110110 3D 35 30

9、36 ? 5 0 6 44H DD 5 0 6第20页/共118页第二十页,共119页。PROGNAME SEGMENTMAIN PROC FARASSUME CS: PROGNAMESTART: PUSH DS SUB AX,AX;AX=0 PUSH AX MOV CH, 4;循环循环(xnhun)次数次数ROTATE: MOV CL, 4 ; BX=D506H ROL BX, CL ; BX=506DH第21页/共118页第二十一页,共119页。MOV AL, BL ; BL=6DHAND AL, 0FH ; AL=0DHADD AL, 30H ; AL=3DHCMP AL,3AHJL P

10、RINITADD AL,07H ;AL=3D+07=44HPRINIT: MOV DL, AL ; DL=44HMOV AH, 02HINT 21H ; 在屏幕在屏幕(pngm)上输出上输出D第22页/共118页第二十二页,共119页。DEC CH;JNZ ROTATE;处理;处理(chl)下四个二进制下四个二进制位位RETMAIN ENDPPROGNAME ENDSEND START第23页/共118页第二十三页,共119页。例:在ADDR单元中存放(cnfng)着数Y的地址,试编制一程序把Y中的1的个数存入COUNT单元中Y=0?如果Y=0则1的个数是0否则(fuz),按位判断移位指令 S

11、F CF Y01101 0101 0010 01100011010 1010 0100 110001第24页/共118页第二十四页,共119页。DATA SEGMENTADDR DW NUMBERNUMBER DW 1101010100100110BCOUNT DW ?DATA ENDS第25页/共118页第二十五页,共119页。MOV CX,0 ; CX做计数器做计数器MOV BX, ADDR ; BX中存放数字中存放数字(shz)的地址的地址MOV AX,BX ; AX 中存放二进制数中存放二进制数REPEAT: TEST AX, FFFFH JZ EXIT;如果如果AX=0则结束则结束

12、JNS SHIIFT;SF=0则看下一位则看下一位 INC CX ;SF=1 计数器加计数器加1 SHIFT: SHL AX,1 JMP REPEAT第26页/共118页第二十六页,共119页。 附加段中,有一个首地址附加段中,有一个首地址(dzh)为为LIST的未经排序的字数组,数组的第一个字中,的未经排序的字数组,数组的第一个字中,存放着数组的长度,首地址存放着数组的长度,首地址(dzh)已经存入已经存入DI寄存器中,寄存器中,AX中存放着一个数。要求编程序,中存放着一个数。要求编程序,在数组中查找该数,如果找到删除在数组中查找该数,如果找到删除71820157911LISTAX=20DI

13、6432105CX=7例:第27页/共118页第二十七页,共119页。DEL_UL PROC NEAR CLD PUSH DI MOV CX, ES:DI;数组中元素个数送数组中元素个数送CX ADD DI,2; 指向指向(zh xin)第一个元素第一个元素 REPNE SCASW;串扫描;串扫描 AL-ES:DI JE DELETE ;找到数据,删除之找到数据,删除之 POP DI ;没找到数据,还原没找到数据,还原DI的值的值 JMP SHORT EXIT CX 表示(biosh)还未检查的元素的个数DI 相匹配元素的下一个元素的地址第28页/共118页第二十八页,共119页。DELETE

14、: JCXZ DEC_CNT;数组在最后一位数组在最后一位NEXT_EL: MOV BX, ES:DI MOV ES:DI-2,BX ADD DI,2 LOOP NEXT_EL;循环循环(xnhun)次数次数CXDEC_CNT:POP DI;修改数据个数修改数据个数 DEC WORD PTR ES:DIEXIT: RETDEL_UL ENDP第29页/共118页第二十九页,共119页。71820157911LISTAX=20DI6432105CX=7718151579117181577911718157991171815791111第30页/共118页第三十页,共119页。6123910171

15、921HEAD61239101719212161239101719192161239101717192161239101017192161236910171921NSIEND例:在已排序的数组的适当(shdng)位置插入数据第31页/共118页第三十一页,共119页。MOV AX, 6MOV ARRAY_HEAD-2,FFFFH;X单元单元(dnyun)存入存入-1MOV SI,0COMPARE: CMP ARRAY_ENDSI, AX JLE INSERT MOV BX, ARRAY_ENDSI MOV ARRAY_ENDSI+2,BX 第32页/共118页第三十二页,共119页。 SUB

16、SI, 2 JMP COMPARE INSERT: MOV ARRAY_ENDSI+2, AX 12369SISI+2SI-2=SI第33页/共118页第三十三页,共119页。5.3.3多重循环多重循环(xnhun)程序设计程序设计【例】在以A为首址的字存储区中存放有N个有符号数,编写其程序将它们按大到小的顺序排列在A存储区中我们采用冒泡排序算法从第一个数开始依次对相邻两个数进行比较,如次序对,则不交换两数位置;如次序不对,则使这两个数交换位置。可以看出,第一遍需比较(N-1)次,此时,最小的数已经放到了最后;第二遍比较只需考虑剩下(shn xi)的(N-1)个数,即只需比较(N-2)次;第三

17、遍只需比较(N-3)次,整个排序过程最多需(N-1)遍。第34页/共118页第三十四页,共119页。数108169032第一遍10816903210 168903210 169083210 1690328第二遍169032108第三遍903216108如下面的5 5个数即是采用(ciyng)(ciyng)冒泡排序比较的例子。第35页/共118页第三十五页,共119页。DATASEGMENTADW3,-5,6,7,9,2,0,-8,-9,-10,20N=(-A)/2DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX第3

18、6页/共118页第三十六页,共119页。MOV CX,NDECCXLOOP1: MOVDI, CX;保 存(bocn)外循环次数MOVBX,0;?内循环次数LOOP2:MOVAX,ABXCMPAX,ABX+2JGECONTINUEXCHGAX,ABX+2MOVABX,AX108第37页/共118页第三十七页,共119页。CONTINU:ADDBX,2DECCX;JNELOOP2;LOOPLOOP2MOVCX,DILOOP LOOP1MOVAH,4CHINT21HCODEENDSENDSTART第38页/共118页第三十八页,共119页。程序运行后,A中的内容如下:20,9,7,6,3,2,0,

19、-5,-8,-9,-10若 要 对 N个 无 符 号 数 按 由 大 到 小 的 顺 序 排 列 , 只 需 将 指 令(zhlng)“JGE”改为“JAE”即可。第39页/共118页第三十九页,共119页。5.4分支(fnzh)程序设计5.4.1用条件转移指令实现程序(chngx)分支5.4.2用跳转表实现多路分支第40页/共118页第四十页,共119页。5.4.1用条件用条件(tiojin)转移指令实现转移指令实现程序分支程序分支编写计算下面函数值的程序:1X0Y=0X=0-1XHIGHLOW,HIGH初始化CF=0 查找查找(ch zho)不成功,不成功,Y CF=0退出(tuch)N计

20、算中间元素(yun s)下标MID=LOW+HIGH/2AX=RMID= 成功成功LOW=MID+1HIGH=MID-19表示(biosh)不合法输入CBW;AL扩展到AX第78页/共118页第七十八页,共119页。XCHG AX, BX ; AX=0 BX=MMMOV CX, 10MUL CX; XCHG AX,BX; BX=0 AX=MMADD BX, AX; BX=0+MMJMP NEW CHAR EXIT: RETDECIBIN ENDP第79页/共118页第七十九页,共119页。十进制数:1234=(010+1)10+2)10+3)10+4十六进制(shlijnzh):=(0A+1)

21、A+2)A+3)A+4=(A+2)A+3)A+4=(CA+3)A+4=7BA+4=04D2实际是利用计算机内部(nib)按16进制计算的结果。(0 A+D1)A+D2)A+D3) A+D4第80页/共118页第八十页,共119页。CRLF PROC NEAR MOV DL,0DH MOV AH,02H INT 21H ;输出输出(shch)回回车符车符 MOV DL,0AH MOV AH,02H INT 21H;输出;输出(shch)换换行符行符 RETCRLF ENDP 回车换行子程序回车换行子程序第81页/共118页第八十一页,共119页。BINIHEX PROC NEAR MOV CH,

22、4ROTATE:MOV CL,4 ROL BX,4 MOV AL,BL AND AL,0FH ADD AL,30H CMP AL,3AH JL PRINTIT ADD AL,07HPRINTIT: MOV DL,AL MOV AH,02H INT 21H DEC CH JNZ ROTATERETBINIHEX ENDP第82页/共118页第八十二页,共119页。2.同一个代码段中可以通过同一个代码段中可以通过(tnggu)变变量传参量传参DATA SEGMENT ARY DW 100 DUP(?) COUNT DW 100SUM DW ?DATA ENDSCODE SEGMENTMAIN PR

23、OC FAR ASSUME CS: CODE ,DS:DATA第83页/共118页第八十三页,共119页。SATART: PUSH DS XOR AX,AX PUSH AX MOV AX, DATA MOV DS, AX CALL NEAR PTR PROADD :;:;prntsum RETMAIN ENDP第84页/共118页第八十四页,共119页。PROADD PROC NEAR PUSH AX PUSH CX PUSH SI LEA SI, ARY MOV CX, COUNT XOR AX,AXNEXT: ADD AX,SI ADD SI,2 LOOP NEXTMOV SUM ,AXP

24、OP SIPOP CXPOP AXRETPROADD ENDPCODE ENDS END START第85页/共118页第八十五页,共119页。5.7高级汇编语言(hubinyyn)技术5.7.1宏指令(zhlng)5.7.2宏指令(zhlng)的使用过程5.7.3宏操作符5.7.4局部符号伪指令(zhlng)LOCAL5.7.5宏库的使用5.7.6重复汇编5.7.7条件汇编第86页/共118页第八十六页,共119页。5.7.1宏指令宏指令(zhlng)在汇编语言程序设计过程中,可以将具有一定功能,需多次重复使用,且比较(bjio)短的程序段定义成一条宏指令。使用宏指令语句可以减少程序书写错误

25、,缩短源程序长度,使源程序编写像高级语言一样清晰、简洁。特别是使用宏库后,可以提高编程效率。第87页/共118页第八十七页,共119页。5.7.2宏指令的使用宏指令的使用(shyng)过程过程1宏定义(dngy)2宏调用3宏扩展第88页/共118页第八十八页,共119页。1宏定义(dngy)(1)带参宏定义宏指令名MACRO形参1,形参2,.宏体ENDM(2)无参宏定义宏指令名MACRO.宏体ENDM注:宏指令名即宏的名称(mngchng),第一个字符必须是字母,其后可以是字母、数字、下划线第89页/共118页第八十九页,共119页。例子:定义一个宏,完成(wnchng)输出缓冲区字符串的功能

26、printMACRObufoffsetleadx,bufoffsetmovah,09int21hENDM无参数(cnsh)宏INITSR MACROMOV AX,DATA1MOV DS,AXMOV AX,DATA2MOV ES,AX ENDM第90页/共118页第九十页,共119页。2宏调用(dioyng)格式:宏指令名实参1,实参2,例 : 对 上 面 的 宏 定 义 的 三 种 调 用 形 式(xngsh)为:PRINTBUF1;宏必须先定义再使用,通常;将宏写在所有代码之前PRINTBUF2PRINTBUF3第91页/共118页第九十一页,共119页。3宏扩展(kuzhn)+LEADX,

27、BUF1+MOVAH,9+INT21H+LEADX,BUF2+MOVAH,9+INT21H + LEADX,BUF3+ MOVAH,9+ INT21H例如:上面例如:上面(shng min)三次宏调用,其展开的形式为:三次宏调用,其展开的形式为: 在对源程序汇编时,汇编程序在对源程序汇编时,汇编程序对每个宏调用进行展开,列表对每个宏调用进行展开,列表文件会在宏展开指令前用文件会在宏展开指令前用“+”号指示。在宏展开时,用实际号指示。在宏展开时,用实际参数取代形式参数。不要求参数取代形式参数。不要求(yoqi)形参实参个数相等。形参实参个数相等。实参多,则多余实参不予考虑;实参多,则多余实参不予

28、考虑;若形参多,则多余形参做若形参多,则多余形参做“空空”处理。处理。实参取代形参时,必须符合汇实参取代形参时,必须符合汇编指令格式,否则会提示错误。编指令格式,否则会提示错误。第92页/共118页第九十二页,共119页。宏的特点(tdin)1.宏调用时可以用实参代替形参,避免了子程序引传递参数带来的麻烦。2.参数可以是常数、寄存器、存储单元等,甚至可以是指令的操作码或操作码的一部分3.工作方式与子程序不同:4.子程序占有自身大小的空间,执行时由主程序调用;5.宏则在汇编期间(qjin)展开,调用一次展开一次,因此所占空间也随着调用次数而增大6.总结子程序与宏的异同点第93页/共118页第九十

29、三页,共119页。5.7.3宏定义宏定义(dngy)中的参数中的参数1.可以无参数例P2492.可以是操作码、操作数等例:在程序中定义大小及初值不同(btn)的堆栈段。宏定义如下:DSTACKMACROASTACKSEGMENTSTACKDBAdup(?)STACKENDSENDM第94页/共118页第九十四页,共119页。宏定义:FOOMACROP1,P2,P3MOVAX,P1P2P3ENDM宏调用(dioyng):FOObx,mul,bx;FOObx,add,4宏展开:movax,bxmulbxmov ax,bxadd 4FOO BL第95页/共118页第九十五页,共119页。3.参数可以

30、是操作码或操作数的一部分,必须在宏定义体中用&作为分隔符&作为形参前缀(qinzhu),把其前后两个符号合并形成一个符号,这个符号可以是操作码操作数或是一个字符串FOMACROCON,P1J&CONSTR&P1ENDMMSGMACROLAB,NUM,XYZLAB&NUMDBHELLO,MR&XYZENDMFO E, 3展开(zhn ki):JE STR3MSG BUF,1,RIGHT展开(zhn ki):BUF1 DB “HELLO MR RIGHT”第96页/共118页第九十六页,共119页。4.%操作符汇编程序将%后面的表达式转换成当前基数下的数。宏调用时使用msgmacrocount,s

31、tringmsg&countdbstringendmerrmsgmacrotextcntr=cntr+1;程序中定义的常量(chngling)初值msg%cntr,text; 在一个宏定义体中调;用另一个已定义的宏endm第97页/共118页第九十七页,共119页。DATA1MACROA,B,C,DDWA,B,CDBDDUP(0)ENDM如果(rgu)宏调用为:X=10Y=20DATA1%X+2,5,%X+Y,%Y-5DATA1X+2,5,X+Y,Y-5第98页/共118页第九十八页,共119页。则相应(xingyng)的宏扩展为:+DW12,5,30+DB15DUP(0)+DWX+2,5,X

32、+Y+DBY-5DUP(0)第99页/共118页第九十九页,共119页。5.7.4局部局部(jb)符号伪指令符号伪指令LOCAL当宏中使用了标号(bioho),在多次宏调用后就会出现多个重复标号(bioho),这是不允许的。Local可以解决此问题。格式:Local 标 号(bioho)列表;宏定义中出现的标号(bioho)注:必须是宏定义体的第一句。SUM MACROX,Y LOCALL MOVCX,X MOV BX,Y MOV AX,0L: ADDAX,BX INCBX LOOP L ENDM 第100页/共118页第一百页,共119页。两次调用(dioyng)宏指令如下:SUM100,1

33、SUM50,1则宏扩展形式为:MOVCX,100MOVBX,1MOVAX,0?0000:ADDAX,BXINC BXLOOP ?0000 MOVCX,50MOVBX,10MOVAX,0?0001:ADDAX,BX INC BXLOOP ?0001 第101页/共118页第一百零一页,共119页。5.7.5宏库的使用宏库的使用(shyng)引入宏库的语句格式(gshi):INCLUDE库文件名;includemymacro.lib宏库文件的建立:将包含宏的文件存成.lib类型的文件即可。第102页/共118页第一百零二页,共119页。假设已建立一名为MACRO.LIB的宏库,其内容如下:INPU

34、TMACROALEADX,AMOV AH,10;10号系统(xtng)功能调用INT21HENDMPRINTMACROALEADX,AMOV AH,9;9号系统(xtng)功能调用INT21HENDM第103页/共118页第一百零三页,共119页。RETURNMACROMOVAH,2MOVDL,0AHINT21HMOVDL,0DH;回车换行INT21HENDMOUT2 MACROAMOVDL,AMOVAH, 2 ; 2号 系 统 (xtng)功能调用INT21HENDM第104页/共118页第一百零四页,共119页。STACK0MACROASTACK SEGMENTSTACKDBASTACK

35、ENDSENDM现要从键盘输入一串字符到系统缓冲区,然后将字符按相反顺序打印,采用调用宏库的办法(bnf),其程序如下:第105页/共118页第一百零五页,共119页。INCLUDEMACRO.LIBSTACK0200DUP(0);定义(dngy)堆栈段DATASEGMENTINF01DBINPUTSTRING:INF02DBOUTPUTSTRING:BUFADB81DB?DB80DUP(0)第106页/共118页第一百零六页,共119页。BUFBDB81DUP(0)DATAENDSCODESEGMENTASSUMEDS:DATA,SS:STACK,CS:CODESTART:MOV AX,DA

36、TAMOV DS,AXRETURN;输出回车换行PRINTINFO1; 输 出 字 符 变 量(binling)INFO1 代表的字符串INPUTBUFA ;键盘输入字符中到缓冲区;LEASI,BUFA+1MOV CH,0MOV CL,SIADDSI,CXLEADI,BUFB第107页/共118页第一百零七页,共119页。NEXT:MOVAL,SIMOVDI,ALDEC SIINC DILOOPNEXTMOVBYTEPTRDI,RETURN;输出(shch)回车换行PRINTINF02;输出(shch)的字符串变量INF02代表PRINTBUFB ;反向输出(shch)输入字符串MOVAH,5

37、CHINT21HCODEENDSEND START第108页/共118页第一百零八页,共119页。5.7.6重复重复(chngf)汇编汇编1给定次数的重复汇编伪指令语句格式:REPT表达式重复块ENDM功能:宏汇编程序(hubinchnx)将重复块连续地汇编表达式给定的次数。2不定次数的重复汇编伪指令,有IRP和IRPC两种伪指令。第109页/共118页第一百零九页,共119页。【例5.22】某一源程序需要多次将AX,BX,CX,DX寄存器的内容压入堆栈,则可定义如下宏指令。PUSHRMACROIRPREG, AX, BX, CX,DXPUSHREGENDMENDM调用(dioyng)上述宏定

38、义后,将展开成下列语句:+PUSHAX+PUSHBX第110页/共118页第一百一十页,共119页。+PUSH CX+PUSH DX又如:IRPW,1122H,3355H,5566H,7788HDWWENDM汇编(hubin)程序在汇编(hubin)时将产生语句:+ DW 1122H, 3355H, 5566H,7788H。(2)IRPC语句格式:IRPC形参,字符串重复块ENDM第111页/共118页第一百一十一页,共119页。5.7.7条件条件(tiojin)汇编汇编条件汇编指在汇编期间,宏汇编程序根据条件是否成立决定具体(jt)汇编哪一程序段。条件汇编用条件汇编伪指令来定义。如表5.1所

39、示。语句格式:IF 表达式 条件块1 ELSE 条件块2 ENDIF第112页/共118页第一百一十二页,共119页。表表5.1 条件条件(tiojin)汇编伪指令汇编伪指令 第113页/共118页第一百一十三页,共119页。【例5.25】试用条件汇编编写一宏定义(dngy),能完成多种DOS系统功能调用。源程序如下:DOSYSMACRON,BUFIFENEXITMENDIFIFDEF BUFLEADX,BUFMOV AH,NINT21HELSE第114页/共118页第一百一十四页,共119页。MOVAH,NINT21HENDIFENDM;DATASEGMENTMSG DBINPUTSTRIN

40、G:BUF DB81,0,80DUP(0)DATAENDSSTACKSEGMENTSTACKDB200DUP(0)第115页/共118页第一百一十五页,共119页。STACKENDSCODESEGMENTASSUME DS: DATA,CS:CODE,SS:STACKBEGIN:MOV AX,DATAMOV DS,AXDOSYS9,MSGDOSYS10,BUFDOSYS5CHCODEENDSEND START第116页/共118页第一百一十六页,共119页。则以上三条(sntio)宏指令展开后的语句为:+LEADX,MSG+MOVAH,9+INT21H+LEADX,BUF+MOVAH,10+I

41、NT21H+MOVAH,5CH+INT21H第117页/共118页第一百一十七页,共119页。感谢您的欣赏(xnshng)!第118页/共118页第一百一十八页,共119页。内容(nirng)总结5.1.1 汇编语言程序设计的一般步骤。流程图具有(jyu)简洁、明了、直观的特点。设输入数据为X、输出数据Y,且皆为字节变量。ADD AL,AL。MOV AH,*。调用子程序的程序称为主调程序或主程序。过程名是过程入口地址的符号表示。IPIP+位移量。DST可以使用寄存器寻址或存储器寻址。SP SP+EXP*2。使用子程序时,一定要注意堆栈段中的内容,。实参多,则多余实参不予考虑。cntr=cntr+1。感谢您的欣赏第一百一十九页,共119页。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号