第四章10.9.08汇编措辞语法与ods功效调用_第1页
第四章10.9.08汇编措辞语法与ods功效调用_第2页
第四章10.9.08汇编措辞语法与ods功效调用_第3页
第四章10.9.08汇编措辞语法与ods功效调用_第4页
第四章10.9.08汇编措辞语法与ods功效调用_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章汇编语言语法和DOS功能调用4.1汇编语言程序的格式4.2汇编语言中的基本数据4.3伪指令语句4.4汇编语言中的表达式4.5指令语句4.6宏指令语句及其使用4.7DOS系统功能调用4.8习题例解4.9练习题4.1汇编语言程序的格式例4-1试求小于100的所有非零偶数,并把结果存入以BUFF开始的内存区。1MY_DATASEGMENT ;定义数据段2BUFFDB50DUP(?) ;设置缓冲区3MY_DATAENDS ;定义数据段结束4MY_CODESEGMENT ;定义代码段5ASSUMECS:MY_CODE, ;规定CS和DS的内容DS:MY_DATA6START:MOV AX,MY_DATA;DS初始化为MY_DATA7MOV DS,AX8MOVAL,2;置循环初始值9LEABX,BUFF10LLP:MOV[BX],AL;循环体11INCAL12INCAL13CMPAL,100;循环控制14JNZLLP15INT20H;返回DOS16MY_CODEENDS;代码段结束17END START;整个程序结束汇编语言程序的格式可以归结为以下几点:(1)段的结构段名1SEGMENT伪指令语句定义段!语句1……语句i段名1ENDS段名2SEGMENT语句1……语句j段名2ENDS┋段名nSEGMENT语句1……语句k段名nENDSEND标号(2)语句的结构3种基本语句类型:指令语句伪指令语句宏指令语句语句一般有4个部分组成,即:标号或名字操作码操作数;注释标号或名字:

这是一个任选部分,在语句之首8MOVAL,2;置循环初始值9LEABX,BUFF10LLP:MOV[BX],AL;循环体11INCAL12INCAL13CMPAL,100;循环控制14JNZLLP15INT20H;返回DOS16MY_CODEENDS;代码段结束17END START;整个程序结束4.2汇编语言中的基本数据1、标识符标识符--由程序员自由建立起来的,有特定意义的字符序列。标识符的组成规则如下:①必须由字母、数字(0,…,9)及特殊符号(?,·,@,-,$)组成,且必须以字母打头。②字符总数限制在31个以内。③不能使用属于系统专用保留字(保留的字)。4.2汇编语言中的基本数据2、常数语句中出现的那些固定值,除了自身的值以外,没有其它任何属性。常数分为两类(1)数值常数BQD或不用H(2)字符串常数不超过255个如:D7S43、变量存放在存储器单元中的操作数,它的值是可以改变的,在程序中出现的是存储器单元地址的符号,即与某一数据项第一字节相对应的标识符。变量的3个属性:①段地址:变量所在段的段地址;②偏移地址:变量所在段内的偏移地址;③类型:所定义的每个变量所占据的字节数。4、标号可执行指令语句地址的符号表示,即用标识符来表示地址。标号的3个属性:①段地址:与标号对应的指令首字节所在的段地址。②偏移地址:与标号对应的指令首字节所在的偏移地址。③类型:标号的类型属性有两种:NEAR和FAR类型。4.3伪指令语句伪指令语句可分为以下几种类型:①数据定义伪指令语句②标识符赋值与解除伪指令语句③段定义伪指令语句④过程定义伪指令语句⑤程序开始与结束伪指令语句⑥方式定义伪指令语句⑦结构定义伪指令语句⑧分组伪指令语句⑨其它伪指令语句1、数据定义伪指令语句共有五条:DB、DW、DD、DQ和DT,分别用来定义字节、字、双 字、8字节和10字节。指令格式:变量名助记符操作数1,操作数2,……操作数n;注释变量名助记符nDUP(操作数1,操作数2,……操作数n);注释例4-2操作数是常数、表达式、字符串数据的定义DATA1DB15H,25H DATA2DW9988H,56HDATA3DD2*40H,0AABBHDATA4DB‘HELLO’15H25H88H99H56H00H80H00H00H00HBBHAAH00H00H48H45H4CH4CH4FHDATA1DATA2DATA3DATA4图4-1例4-2的汇编结果例4-3操作数用“?”定义不确定值的变量,用DUP来定义重复变量,不确定值的变量一般用作保留存储空间,以便存放运算结果。DATA1DB?DATA2DW0D55H,?DATA3DB5DUP(0)DATA4DW10DUP(?) DATA5DB4DUP(1,2DUP(20))图4-2例4-3的汇编结果?55H0DH00H00H00H00H00H??┇┇??01H14H14HDATA1DATA2DATA3DATA4DATA5重复4次,共12个字节共20个字节??2、标识符赋值与解除伪指令语句共有4条:等值伪指令语句EQU等号伪指令语句“=”解除伪指令语句PURGE别名定义伪指令语句LABEL(1)等值伪指令EQU语句指令格式:标识符EQU操作数P128例4-4DATAEQU100DATA1EQUDATA+2CIEQUADD(2)等号伪指令语句“=”指令格式:标识符=操作数P128例4-5DATA=100DATA1=DATA+10SOURCE=BX+SIMOVAX,[SOURCE]SOURCE=BXMOVCX,[SOURCE](3)解除伪指令语句PURGE指令格式:PURGE标识符1,标识符2,…标识符n功能:用该指令解除标识符,以后可用EQU重新定义(4)别名定义伪指令语句格式:别名LABEL类型属性LABEL,伪指令助记符,不可缺省。功能:给下一个变量或标号取另一个名字,重新定义类型,灵活P129例4-6定义变量的别名DATABLABELBYTEDATAWDW1234H,5678HDISFLABELFARDISNMOVAX,[SI]3、段定义伪指令语句(1)段结构定义伪指令语句SEGMENT…ENDS指令格式:段名SEGMENT定位类型组合类型‘分类名’逻辑段内容段名ENDS功能:将一个逻辑段的内容定义成一个整体。段名:本段在存储器中的位置助记符:SEGMENTEND参数:4种定位类型:PARA、BYTE、WORD和PAGEP1306种组合类型:NONE、PUBLIC、COMMON、AT、STACK和MEMORY类别名:可省略,不超过40个字符,将所有分类名相同的逻辑段组成一个段组。(2)段分配伪指令语句指令格式:ASSUMECS:段名,DS:段名,SS:段名,ES:段名功能:定义当前有效的4个逻辑段,指明段和段寄存器的关系,并把代码段的段基址装入CS例4-1试求小于100的所有非零偶数,并把结果存入以BUFF开始的内存区。1MY_DATASEGMENT ;定义数据段2BUFFDB50DUP(?) ;设置缓冲区3MY_DATAENDS ;定义数据段结束4MY_CODESEGMENT ;定义代码段5ASSUMECS:MY_CODE, ;规定CS和DS的内容DS:MY_DATA6START:MOV AX,MY_DATA;DS初始化为MY_DATA7MOV DS,AX说明:一般放在代码段的开始,段名为用SEGMENT定义过的名字:,通常代码段必须,数据段必须ASSUMEES:NOTHING取消取消已经由ASSUME指定的段寄存器其他的段,在代码段开始的程序中仍然需要初始化程序,把段基址装入相应寄存器4、过程(子程序)定义伪指令语句指令格式:过程名PROC属性过程内容RET过程名ENDP功能:定义一个在主程序中可以用CALL指令调用的过程。CALL过程名说明:过程名与属性:子程序入口的符号地址,属性有三:段属性:过程所在段的段基址偏移地址属性:该过程第一个字节与段首之间的字节数距离属性:NEAR(默认)FAR助记符:PROCENDP过程调用的子程序与主程序分开独立存在,经汇编后存储器中只占有一个子程序段的空间,主程序转入此处运行,因此目标代码长度短,节省空间5、程序开始与结束伪指令语句共有4条伪指令语句:NAME、TITLE、ORG和END。(1)目标模块命名伪指令语句格式:NAME程序名;定义一个程序名,程序每一页开头输出TITLE文本名;功能:为源程序目标模块赋一个程序名。(2)定位伪指令语句格式:ORG表达式功能:下一条语句的起始偏移位置ORG$+6例4-7用ORG指定数据段和代码段地址。DATASEGMENTX1DW20H,60H,ORG100HX2DB10H,20H,30HORG200HX3DW1234H,4321HDATAENDSCODESEGMENTORG100HASSUMECS:CODE,DS:DATASTART:MOVAX,DATA┋CODEENDS(3)程序结束伪指令语句格式:END标号名例4-8程序结束伪指令语句的应用CODESEGMENTSTART:MOVAX,BXMOVCX,12H┋CODEENDSENDSTARTSTART为程序开始执行的起始地址6、方式定义伪指令语句汇编语言有两种操作方式:8086和80386格式:.8086默认的.386使用32位寄存器必须加功能:定义汇编程序的操作方式7、结构定义伪指令语句有三条语句:结构定义伪指令,结构存储分配和预置伪指令及 结构使用伪指令。(1)结构定义伪指令语句格式:结构名STRUC数据变量序列;为DB、DW等;结构名ENDS例4-9定义一个数据表格TAB的结构TSTRUSTRUCDA1DB‘SXYZ’DA2DW?DA3DWSEGLP1DA4DW2DUP(3)DA5DW5678H,1234HTSTRUENDS只定义,汇编时不产生目标代码,不分配空间

字符串、简单变量、多重变量(2)结构存储分配和预置伪指令语句格式:结构变量名结构名<元素值,元素值…>结构变量名结构名NDUP(<元素值,元素值…>)例4-10对例4-9中的TAB结构进行存储空间分配和预置,形成4个结构变量。P4-10DATA1TSTRU<>DATA2TSTRU<’FROM’>DATA3TSTRU<,7FH,SEGLLL>DATA4TSTRU5DUP(<‘7890’,11H>)连续预置了5个相同的结构变量,每个结构变量的第一个元素和第二个元素为‘7890’和11H(3)结构使用伪指令语句格式:结构变量名·字段变量DATA1.DA1=‘FORM’功能:给出了不同结构变量名的数据结构中的变量元素值设当前数据段基址为1000H,结构变量DATA1的偏移地址为100H,则例4.10中的4个结构变量在存储器中的地址分配如图4-3所示。经过预置的结构变量,具有三属性:段属性、偏移地址属性、类型属性BYTEWORDDWORD(a)DATA1TSTRU<>(c)DATA3TSTRU<,7FH,SEGLLL>(b)DATA2TSTRU<’FROM’>(d)DATA4TSTRU5DUP(<‘7890’,11H>)‘S’‘X’‘Y’‘Z’??SEGLP1低SEGLP1高03H00H03H00H78H56H34H12H10100H(a)‘F’‘R’‘O’‘M’??SEGLP1低SEGLP1高03H00H03H00H78H56H34H12H10110H(b)‘S’‘X’‘Y’‘Z’7FH00HSEGLLL低SEGLLL高03H00H03H00H78H56H34H12H10120H(c)‘7’‘8’‘9’‘0’11H00HSEGLP1低SEGLP1高03H00H03H00H78H56H34H12H10130H(d)重复5次8、分组伪指令语句格式:组名GROUP段1,段2,……功能:将段1、段2等逻辑段放在同一个64KB的物理段内,并给它起一个新的名字。例4-11┋GROUP1GROUPSEG1,SEG2,SEG3ASSUMEDS:GROUP1MOVAX,GROUP1MOVDS,AXMOVBX,GRPUP1:VAR1┋9、其它伪指令语句(l)外部伪指令语句格式:PUBLIC名称1,名称2,…EXTRN名称1:类型,名称2:类型,…功能:PUBLIC定义全局标识符,名称在本模块中定义的EXTRN指出外部标识符,名称为在其他模块中用PUBLIC定义的类型:BYTEWORDNEARFAR常数为ABS例4-12用EXTRN和PUBLIC语句实现模块间标识符的交叉访问模块1EXTRNDATA2:BYTE,SUBTR1:NEARPUBLICTABLE,DATA1DSEGSEGMENTTABLEDB100DUP(?)DATA1DW?DSEGENDSCODESEGMENTASSUMECS:CODE,DS:DSEG┇MOVAX,DSEGMOVDS,AX┇MOVAL,DATA1CALLSUBTR1┇MOVAX,SEGDATA2MOVES,AXMOVBX,ES:DATA2┇CODEENDSEND模块2EXTRNTABLE:BYTEPUBLICSUBTR1,DATA2DSEGSEGMENTDATA2DB?┇DSEGENDSCODESEGMENT┇SUBTR1:┇┇CODEENDSEND(2)对准伪指令语句格式:EVEN;下一个语句的地址调整为偶地址例4-13EVEN直接放在某一语句前,汇编程序汇编时就会完成将地址调整在偶地址上。DATASEGMENTORG100HA1DB0DHEVENA2DW100DUP(?)DATAENDS(3)条件汇编伪指令语句一般格式是:IF;如果条件成立[ELSE];[否则]ENDIF;结束条件汇编语句IF有多种形式,它们是:P138IF操作数IFE操作数IFDEF标号或变量IFNDEF标号或变量IFB<变量>IFNB<变量>IFIDN<操作数l>,<操作数2>IFDIF<操作数1>,<操作数2>IF1IF2

4.4汇编语言中的表达式表达式运算对象和运算符组成。汇编语言中有6类运算符,即:①算术运算符;②逻辑运算符;③关系运算符;④分析运算符;⑤修改属性运算符;⑥其它运算符。1、算术运算符算术运算符有:加(+)、减(-)、乘(*)、除(/)、取模运算(MOD)、左移(SHL)和右移(SHR)。取模运算是取两数相除的余数,对象必须为正整数。例如:92MOD16结果为12(相当于取低4位的值)97HMOD20H结果为23(相当于取低5位的值)33HMOD7结果为2例4-14包含乘法和减法算术运算符的表达式DATASEGMENTARY DB10,20,30,40,50TY DB 20DATAENDSCODESEGMENTMOV BX,50*4MOV CX,(TY-ARY) ┇CODEENDS例4-15源程序包含除法、减法、模运算和移位运算的表达式DATASEGMENTKAEQU900DATAENDSCODESEGMENT MOVBX,KA-70 MOV AX,KAMOD100 MOV CX,KA/100 MOV DH,01100100BSHR3┇CODEENDSMOVBX,830MOVAX,0MOVCX,9MOVDH,0CH2、逻辑运算符逻辑运算符有:与(AND)、或(OR)、非(NOT)和异或 (XOR)例4-16AND、OR、NOT、XOR逻辑运算的表达式MOVAL,NOT0AAH;含有表达式NOT0AAHMOVBL,23HAND0FH;含有表达式23HAND0FHMOVCH,24HOR0F0H;含有表达式24HOR0F0HMOVDH,25HXOR0FFH;含有表达式25HXOR0FFH汇编时,汇编程序对表达式进行计算,汇编后相应的指令变成:MOVAL,055HMOVBL,03HMOVAH.0F4HMOVCH,0DAH3、关系运算符关系运算符有:相等EQ、不等NE、小于LT、大于GT、小于 或等于LE、大于或等于。4、分析运算符分析运算符有:OFFSET、SEG、TYPE、LENGTH、SIZE(1)OFFSET格式:OFFSET变量或标号;取偏移地址

例4-17用OFFSET返回标号或变量偏移地址值的表达式DATASEGMENT┇DAT1DB81HDATAENDSCODESEGMENTMOVSI,OFFSETLAB1┇LAB1:MOVBX,OFFSETDAT1┇CODEENDS(2)SEG格式:SEG变量或标号;取段基址(3)TYPE格式:TYPE变量或标号;返回类型和距离表4-1TYPE运算符返回值变量标号类型DBDWDDDQDTNEARFAR返回值124810-1-2例4-18TYPE加在变量和标号前的表达式DATAEGMENTXX1DW40H,14HXX2DD1048HXX3DB30H,31H,32HDATAENDSCODESEGMENTLP1:MOVAL,TYPEXX1MOVBL,TYPEXX2ADDAH,TYPEXX3MOVBH,TYPELP1CODEENDS汇编时,汇编软件首先把表达式计算成常数,汇编后的相应指令如下:LP1:MOVAL,2MOVBL,4ADDAH,1MOVBH,0FFH(4)LENGTH格式:LENGTH变量返回变量的个数,只有当变量中使用DUP时,才返回个数,否则为1例4-19LENGTH加变量的表达式DATASEGMENTXX1DD150DUP(?)XX2DW?,12,13XX3DB‘HOWAREYOU’DATAENDSCODESEGMENTMOVAX,LENGTHXX1MOVAL,LENGTHXX2MOVBL,LENGTHXX3CODEENDS汇编后的相应指令如下:MOVAX,150MOVAL,1MOVBL,l(5)SIZE格式:SIZE变量;返回变量所包含的总字节数把例4-19中含有LENGTH表达式改为SIZE表达式,即:MOVAX,SIZEXX1MOVAL,SIZEXX2MOVBL,SIZEXX3汇编后的相应指令如下:MOVAX,600MOVAL,2MOVBL,lSIZE=LENGTH*TYPE5、修改属性运算符(综合运算符)修改属性运算符有:段操作符、PTR、THIS、HIGH、LOW、 SHORT(1)段操作符格式:段前缀:变量或地址表达式(2)PTR格式:类型PTR变量距离PTR标号;将左边赋给右边例4-20带PTR表达式的变量DATASEGMENTCC1DB16H,36HCC2DW1122H,3344HDATAENDSCODESEGMENTLL1:MOVAX,WORDPTRCC1MOVBL,BYTEPTRCC2MOVBYTEPTR[BX],10HMOVWORDPTR[BX],10H┇JMPFARPTRLL1┇CODEENDS(3)THIS格式:变量EQUTHIS类型;将右边赋给左边标号EQUTHIS距离例如:DATA1EQUTHISBYTETABLEDW200DUP(?)又如:LL1EQUTHISFARMOVAX,100DATA1的偏移地址值与TABLE相同,但DATA1为字节,TABLE为字!给MOVAX,100前的标号LL1修改距离为FAR(4)SHORT格式:SHORT标号功能:指出转移类指令,目的地址范围在-128—127间(5)HIGH和LOW它们称为字节分离运算符格式:HIGH变量或标号;分别分离高低字节部分LOW变量或标号

例4-21带HIGH和LOW表达式的变量DATASEGMENTBB1EQU1234HBB2EQU0A0B0HDATAENDSCODESEGMENTMOVAH,HIGHBB1MOVBL,LOWBB2CODEENDS6、其它运算符不介绍7、注意点:(1)注意表达式中各运算符和操作符的优先级P145(2)注意数制统一:计算时将数据统一成同一进制数表示4.5指令语句指令语句的格式:标号:前缀指令助记符操作数;(注释)(1)立即寻址和直接寻址的表示形式例4-22立即寻址和直接寻址在表示形式上的区别DATASEGMENTBB1EQU1234HBB2DW0A0B0HDATAENDSCODESEGMENTMOVAX,BB1MOVBX,BB2MOVCX,[BB1]CODEENDS(2)基址寄存器加变址寄存器寻址的表示形式有两种表示形式:MOVAX,[BX][SI]MOVAX,[BX+SI](3)相对寄存器寻址的表示形式例4-23相对寄存器寻址的两种表示形式DATASEGMENTMYDATDB100DUP(?)DATAENDSCODESEGMENT┇MOVAX,MYDAT[BX]MOVAX,[MYDAT+BX]MOVCX,MYDAT[BX][SI]MOVCX,[MYDAT+BX+SI]CODEENDSDATA1的偏移地址值与TABLE相同,但DATA1为字节,TABLE为字!4.6宏指令语句及其使用1、宏定义宏定义格式:宏指令名MACRO形式参数1,形式参数2…宏体;程序代码ENDM2、宏调用宏调用格式:宏指令名实际参数1,实际参数2…3、宏展开例4-24无形式参数的宏定义、宏调用及宏展开宏定义:PUSHABMACROPUSHAXPUSHBXENDM宏调用:PUSHAB宏展开:+PUSHAX+PUSHBX例4-25带形式参数的宏定义、宏调用及宏展开宏定义:LDSFMACROPR,VAR,N,REG,CCMOVPR,VARMOVAX,[PR]MOVCL,NS&CCREG,CLENDM宏调用1:LDSFSI,WVAR1,4,AX,AR宏调用2:LDSFDI,WVAR2,3,BX,AL宏展开1:+MOVSI,WVAR1+MOVAX,[SI]+MOVCL,4+SARAX,CL宏展开2:+MOVDI,WVAR2+MOVAX,[DI]+MOVCL,3+SALBX,CL4、宏嵌套(1)宏定义中使用宏调用例4-26设在程序的数据段已经定义了变量X,Y,Z,试计算X+Y→Z,并要求保护所有使用的寄存器。宏定义:DBFMACROP,QMOVBX,PMOVAX,QADDAX,BXENDMDBFSMACROX1,X2,X3PUSHAXPUSHBXDBFX1,X2MOVX3,AXPOPBXPOPAXENDM宏调用:DBFSX,Y,Z宏展开:+PUSHAX+PUSHBX +MOVBX,X+MOVAX,Y+ADDAX,BX+MOVZ,AX+POPBX+POPAX(2)宏定义中包含宏定义例4-27设在程序的数据段已经定义了变量X,Y,Z,试共用一个宏定义,计算X+Y→Z、X-Y→Z、XANDY→Z,并要求保护所有使用的寄存器。宏定义:DEFMMACROMNAME,OPENMNAMEMACROC1,C2,C3PUSHAXMOVAX,C1OPENAX,C2MOVC3,AXPOPAXENDMENDM宏调用定义加法:DEFMADDIT,ADD宏调用定义减法:DEFMSUBT,SUB宏调用实现X+Y→Z:ADDITX,Y,Z宏展开:+PUSHAX+MOVAX,X+ADDAX,Y+MOVZ,AX+POPAX宏调用实现X-Y→ZSUBTX,Y,Z宏展开:+PUSHAX+MOVAX,X+SUBAX,Y+MOVZ,AX+POPAX

5、宏定义中的标号与变量定义局部标号的格式:LOCAL参数1、参数2、……参数n功能:放在宏体第一行,参数为宏体中用到的标号和变量局部标号或变量定义后,宏展开时程序中出现的各标号或变量依次用??0000,??0001,??0002,??0003…代替6、其它宏指令语句(1)取消宏指令语句格式:PURGE宏指令名1,宏指令名2……宏指令名n功能:取消宏指令名,以后可重新定义(2)重复执行宏指令语句格式:REPT表达式宏体ENDM功能:连续重复完成相同的操作,次数为表达式所给的值7、宏指令与子程序的区别主要区别在以下几个方面:1)宏指令调用比子程序调用执行速度快:子程序调用需要入栈和出栈2)过程调用使用CALL语句实现,在CPU执行时进行处理,而宏指令调用由宏汇编软件MASM中的宏处理程序来处理。

7、宏指令与子程序的区别3)子程序比宏指令节省内存空间:过程调用的子程序与主程序分开独立存在,经汇编后存储器中只占有一个子程序段的空间,主程序转入此处运行,因此目标代码长度短,节省空间而宏调用在汇编过程中展开,宏调用多少次,就插入多少次宏体,因此目标代码长,占内存空间多。7、宏指令与子程序的区别4)宏指令比子程序灵活:子程序一般完成某一个功能,仅入口参数可以改变,而宏指令可以带形式参数,调用时可以用实际参数取代,使不同的调用完成不同的操作。4.7DOS系统功能调用P379P378附录CDOS功能调用表INT21H1、常用的DOS软中断P152表4-2(1)程序结束软中断1)INT20H调用格式举例:INT20H功能:终止当前进程,关闭所有打开的文件,清除磁盘缓冲区,返回控制台的命令接收状态,不需要任何的入口参数,放在程序之后2)INT21H该软中断又有三种情况:无返回程序结束、程序结束并驻留和带 返回程序结束。无返回程序结束的调用格式:MOVAH,0INT21H程序退出,需入口参数AH=0(调用功能号)程序结束并驻留的调用格式举例:MOVAH,31HMOVAL,1MOVDX,400HINT21H带返回程序结束的调用格式举例:MOVAH,4CHMOVAL,1INT21HAH为功能号,AL返回号,DX保留从程序段前缀开始的内存长度程序退出,并返回代码为1,同时驻留内存,保留从程序段前缀开始的16KB内存。AH为功能号,AL返回号程序退出,并返回代码为13)INT27H调用格式举例:MOVDX,XXINT27H程序退出,DX保留从程序段前缀开始的内存长度,作为系统的一个组成部分,不被覆盖!(2)磁盘扇区读与写调用格式举例:MOVAL,0MOVCX,4MOVDX,4MOVBX,3000HINT25HAL读写驱动器号CX读写扇区数DX起始逻辑扇区号BX读写内存的缓冲区首地址表4-2常用的DOS软中断软中断指令功能入口参数出口参数INT21H程序正常退出无无INT21H系统功能调用AH=功能号,相应入口号相应出口号INT22H结束退出INT23HCtrl+Break处理INT24H出错退出INT25H读磁盘AL=驱动器号CX=读入扇区数DX=起始逻辑扇区号DS:BX=内存缓冲区地址CF=0成功CF=1出错INT26H写磁盘AL=驱动器号CX=写入扇区数DX=起始逻辑扇区号DS:BX=内存缓冲区地址CF=0成功CF=1出错INT27H驻留下退出DS:BX=程序长度2、DOS系统功能调用DOS系统功能可分为三个方面:设备管理、文件管理和目录管理设备管理包括:键盘输入、显示输出、设置磁盘缓冲器、选择当 前盘等功能调用;文件管理包括:建立文件、打开文件、读/写文件、删除文件等 功能调用;目录管理包括:查找目录项、更改目录项、建立子目录、删除子 目录等功能调用。(1)显示功能调用1)单字符显示调用格式举例:MOVDL,‘*’MOVAH,2INT21H2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论