汇编语言语法和DOS功能调用课件

PPT
  • 阅读 49 次
  • 下载 0 次
  • 页数 71 页
  • 大小 250.023 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
汇编语言语法和DOS功能调用课件
可在后台配置第一页与第二页中间广告代码
汇编语言语法和DOS功能调用课件
可在后台配置第二页与第三页中间广告代码
汇编语言语法和DOS功能调用课件
可在后台配置第三页与第四页中间广告代码
汇编语言语法和DOS功能调用课件
汇编语言语法和DOS功能调用课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 71
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】汇编语言语法和DOS功能调用课件.ppt,共(71)页,250.023 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44807.html

以下为本文档部分文字说明:

第4章汇编语言语法和DOS功能调用4.1汇编语言源程序1.机器语言—用二进制数来表示指令和数据.例如:B0642.汇编语言—用助记符,符号地址以及标号等符号书写的程序。例如:MOVAL,64H;用汇编语言编写的程序叫源程序。3.高级语言—

接近自然语言、习惯的教学语言来描述具体的算法。三种语言的比较为什么还要学习和使用汇编语言呢?主要有三点原因:1)程序设计人员能更充分地利用机器硬件的全部功能,发挥机器长处。2)底层的一些功能仍然靠汇编语言程序来实现。3)汇编语

言程序比高级语言程序的目标代码短且运行速度快。在要求节省内存空间和提高程序运行速度的重要场合(如实时控制等)常用汇编语言来编制。•用汇编语言编写的程序不能由机器直接执行,而必须经汇编程序翻译成机器语言程序。汇编语言指令与翻译成的机器语言指令之间基本

是一一对应的关系。•汇编过程示意:汇编语言程序的建立及汇编过程编辑程序Prog.asm文件汇编程序Prog.obj文件连接程序Prog.exe文件Edit.exeMasm.exeLink.exe汇编示意图调用MASM.EXE.ASM汇编.O

BJ.LST.CRF可选4.1汇编语言程序格式示例程序DATASEGMENT;数据段NUMDW0011101000000111BNOTESDB‘Theresultis:’,’$’DATAENDSCODESEGMENT;代码段ASSUMECS:CODE,DS:DATABEGIN:MOVAX,DA

TAMOVDS,AXMOVDX,OFFSETNOTES;显示提示信息MOVAH,9HINT21HMOVBX,NUM;将数装入BXMOVCH,4;CH作循环计数器示例程序(续)ROTATE:DISPLAY:MOVCL,4;CL中放移位位数MOVDL,AL;显示16进制数R

OLBX,CLMOVAH,2MOVAL,BLINT21HANDAL,0FH;AL中为一位16进制数DECCHADDAL,30H;转换为ASCII码值JNZROTATECMPAL,’9’;是0~9的数码?MOVAX,4C00H;返回DOSJ

LEDISPLAYINT21HADDAL,07H;在A~F之间CODEENDS;代码段结束ENDBEGIN;模块结束堆栈段定义格式STACKSEGMENTSTACKSTADB50DUP(?)TOPEQULENGTHSTASTACKENDSCODESEGMENTA

SSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVSP,TOP:CODEENDSENDSTART汇编语言程序的格式

可以归结为以下几点:(1)段的结构段名1SEGMENT语句1„„语句i段名1ENDS段名2SEGMENT语句1„„语句j段名2ENDS┋段名nSEGMENT语句1„„语句k段名nENDSEND标号(2)语句的结构3种基本语句类型:指令语句伪指令语句宏

指令语句指令语句格式标号:指令助记符操作数;注释标号字段:是一个任选字段,性质为符号便移量,一般用于标记跳转指令的目的地址.在汇编过程中标号会被替换为一个16位的数值偏移量.标号必须位于语句开头,结尾必须使用冒号。指令助记符和操作数:这两个字段组成汇编指令本身,指令助记符是必不可少

的,操作数则根据指令助记符来确定.在汇编过程中,也只有这两个字段会被替换为确定的机器指令代码。注释字段:是一个任选字段,用于说明程序片段或指令的功能,汇编过程中不处理这样的字段,它只是用于提高源程序的可读性.注释必须使用分号作为开始

。例子:教材P138例4-1伪指令语句格式•伪指令语句:这种语句用于指示汇编程序(翻译程序)如何汇编源程序.和指令语句不同,汇编程序处理它时不会产生机器指令代码,只对伪指令提出的要求进行解释并立即完成要求的操作.•伪指令的功能大致有分配存储单元、计算表达式、定义常量等等。4

.2汇编语言中的基本数据1、标识符标识符--由程序员自由建立起来的,有特定意义的字符序列。标识符的组成规则如下:①必须由字母、数字(0,„,9)及特殊符号(?,·,@,-,$)组成,且必须以字母打头。②字符总数限制在31个以内。③不能使用属于系统专用保留字(保留

的字)。2、常数常数------语句中出现的那些固定值,除了自身的值以外,没有其它任何属性。常数分为两类(1)数值常数(2)字符串常数(1)数值常数(2)字符串常数•字符串常数是用单引号引起来的一个或多个字符。字符串常数是以各字符的ASCⅡ码表示的。如‘

A’用41H表示,字符串‘A1B2’用41H,41H,42H,42H表示。3、变量变量------存放在存储器单元中的操作数,它的值是可以改变的,在程序中出现的是存储器单元地址的符号,即与某一数据项第一字节相对应的

标识符。变量的3个属性:①段地址:变量所在段的段地址;②偏移地址:变量所在段内的偏移地址;③类型:所定义的每个变量所占据的字节数。4、标号标号-----可执行指令语句地址的符号表示,即用标识符来表示地址。标号的3个

属性:①段地址:与标号对应的指令首字节所在的段地址。②偏移地址:与标号对应的指令首字节所在的偏移地址。③类型:标号的类型属性有两种:NEAR和FAR类型。1、数据定义伪指令语句共有五条:DB、DW、DD、DQ和DT,分别用来定义字节、字、双字、8字节和10字节。指

令格式:变量名助记符操作数1,操作数2,„操作数n;注释变量名助记符nDUP(操作数1,操作数2,„操作数n);注释注:操作数可以是常数或表达式,变量名,注释可有可无。例4.2操作数是常数、表达式、字符串数据的定义DATA1DB10H,52HDATA2DW1122H,

34HDATA3DD5*20H,0FFEEHDATA4DB‘HELLO’例4.3操作数用“?”定义不确定值的变量,用DUP来定义重复变量,不确定值的变量一般用作保留存储空间,以便存放运算结果。DATA1DB?DATA2DW0D55H,?DATA3DB5DUP(0)DATA4DW10DUP(?

)DATA5DB4DUP(1,2DUP(20)例4.4BUFFERDW3,4,$+3设BUFFER的偏移地址为0088H,则汇编后如下图所示:2、标识符赋值与解除伪指令语句共有4条:等值伪指令语句EQU等号伪指令语句‚=‛解除伪指令语句PURGE别名定义伪指令语句LABEL(1)等

值伪指令EQU语句指令格式:标识符EQU操作数例4.5DATAEQU100DATA1EQUDATA+2CIEQUADD(2)等号伪指令语句‚=‛指令格式:标识符=操作数例4.6DATA=100DATA1=DAT

A+10SOURCE=BX+SIMOVAX,[SOURCE]SOURCE=BXMOVCX,[SOURCE]注:“=”允许重复定义,而EQU一经定义不再重新定义。(3)解除伪指令语句PURGE指令格式:PURGE标识符1,标识符2,…标识符n(4)别名定义伪指令语

句格式:别名LABEL类型属性LABEL:伪指令助记符,不可缺省。例4.7定义变量的别名DATABLABELBYTEDATAWDW1234H,5678HDISFLABELFARDISN:MOVAX,[SI]3、段定义伪指令语句因8086/8088CPU的存储器是分段的

,这就需要有段定语句。与段有关的伪指令有:SEGMENT、ENDS和ASSUME,含义分别是段开始、段结束、指定段寄存器。(1)段结构定义伪指令格式:段名SEGMENT[定位类型][组合类型][’类别‘]┇段名ENDS从段名代表的段基值开始定义一个

段。其中的定位类型、组合类型和′类别′一般都可省略,若不省略时各项的顺序不能变。①定位类型:连接时用于指定该段应开始于什么样的物理地址。可选择下列4种之一:BYTE:从当前可用的字节地址XXXXXXXXXX

XXXXXXXXXX(任一地址)开始;WORD:从当前可用的字地址XXXXXXXXXXXXXXXXXXX0(偶数地址)开始;PARA(缺省):从当前可用的节地址XXXXXXXXXXXXXXXX0000(16的倍数)开始;PAGE:从

当前可用的页地址XXXXXXXXXXXX00000000(256的倍数)开始。其中,1节(paragraph)为16字节,1页为16节即256字节。②组合类型:连接时用于指定同名的各段之间的组合方式。可选择下列6种之一:

PUBLICSTACKCOMMONMEMORYAT表达式NONE(缺省)若省略组合类型或说明为NONE类型,则表示各个段不组合,各有自己的段基值。对堆栈段,必须用STACK类型说明,不能省略。③′类别′:是要将组合后的各段按′类别′分类存放,同类别的段将被相邻地

放在一起。′类别′是由用户定义的、用一对引号括起来的长度不超过40个字符的名字(标识符)。SEGMENT和ENDS这两个伪指令总是成对出现,二者前面的段名一致。二者之间的删节部分,对数据段、附加段及堆栈段,一般是符号、变量

定义等伪指令。对于代码段则是指令及伪指令。此外,还必须明确段和段寄存器的关系,这可由ASSUME语句来实现。(2)段分配伪指令ASSUME该语句必须出现在有关的变量及标号使用之前,定义当前有效的4个逻辑段,用于指定程序中所定义的段与各段寄存器之间的对应关系,指示汇编程序在汇编

过程中如何确定指令隐含使用的段寄存器。指定某段(用段名标识)中的变量、标号等数据项由哪个段寄存器寻址。ASSUME语句是伪指令,它不能给段寄存器传送段基值,只能指定段与段寄存器之间的对应关系。该伪指令的作用时间也是在汇编阶段,不是在程序的执行阶段。在程序设计中,一般ASSUME语

句在代码段中位于所有指令语句之前。注意:把段基值装入段寄存器这一个过程是在程序执行阶段完成的。即便程序中使用了ASSUME语句,如果在程序执行阶段各段寄存器没有装入正确的段基值,那么仍然不能正确的访问内存中的数据。段寄存

器的装入(1)CS段寄存器的装入CS段寄存器和IP指令指针的初始化是由操作系统来完成的。当用户向操作系统提交一个程序时,操作系统会自动把程序中第一条指令的逻辑地址装入到CS和IP中。在这之后,CPU就会从这条指令开始执行,并且不断修改

IP中的内容使它指向下一条指令。(2)DS、ES、SS段寄存器的装入和CS段寄存器的装入方式不同,DS、ES的段基值装入必须由程序员使用MOV指令在自己的程序中来完成。例子见教材P138,注意例子4-1中的ASSUME语句。对DS、ES段寄存器的初始化指令一般在代码段的最开始,因为以后的指令可能

会频繁的访问数据段或附加段的数据,只有先保证段寄存器中的段基值正确,后面的数据操作才是正确的。ASSUME段寄存器名:段名,段寄存器名:段名...告诉汇编程序用SEGMENT伪操作定义过的段的段地址将要存放在哪个段寄存器中

。但真正把段地址装入段寄存器(称为段初始化)的操作需要由程序员自己完成MOVAX,DATAMOVDS,AXMOVES,AX这些语句实现了将段基址装入段寄存器。如程序中用到堆栈段,也需装入实际的初值。而代码段不需要用户装,由初始化

程序装入。4、过程定义伪指令语句在MASM中,过程的含义和子程序是一样的,一个过程可以被其它程序所调用,这个过程的最后一条指令,一般是返回指令。过程定义伪指令的格式为:过程名PROCNEAR/FAR┇RET过程名EN

DP调用一个过程的格式为:CALL过程名例如,有两个程序段,其结构如下:CODE1SEGMENTASSUMECS:CODE1…FARPROCPROCFAR…RETFARPROCENDPCODE1ENDSCODE2SEGMENTASSUMECS:CODE2…CAL

LFARPROC…CALLNEARP…NEARPPROCNEAR…RETNEARPENDPCODE2ENDS5、定位伪指令伪指令ORG规定了段内的起始地址或偏移地址,其格式为:ORG<表达式>表达式的值即为段内的起始地址或偏移地址,从此地址起连续存放程序或数据。例4.8用ORG指定数据段和代码

段地址。DATASEGMENTX1DW20H,60H,ORG100HX2DB10H,20H,30HORG200HX3DW1234H,4321HDATAENDSCODESEGMENTORG100HASSUMECS:CODE,DS:DATASTART:MOVAX,DATA┋COD

EENDS4.4汇编语言的表达式表达式由运算对象和运算符组成。在汇编的时候由汇编程序对它进行运算,其运算结果作为语句中的操作数来使用。运算对象可以是常数、变量和标号,运算结果可以是常数,也可以是存储器的地址

,若该地址中存放的是数据则称它为变量,若该地址中存放的是指令则称它为标号。下面介绍五种运算符:①算术运算符②逻辑运算符③关系运算符④分析运算符⑤修改属性运算符1、算术运算符算术运算符有:加(+)、减(-)、

乘(*)、除(/)、取模运算(MOD)、左移(SHL)和右移(SHR)。取模运算是取两数相除的余数,对象必须为正整数。例如:92MOD16结果为12(相当于取低4位的值)97HMOD20H结果为23(

相当于取低5位的值)33HMOD7结果为2例4.15包含乘法和减法算术运算符的表达式DATASEGMENTARRAYDB1,2,3,4,5,6TRYDB20DATAENDSCODESEGMENTMOVBX,30*5MOVCX,(TRY-AR

RAY)┇CODEENDS例4.16源程序包含除法、减法、模运算和移位运算的表达式DATASEGMENTKAEQU800DATAENDSCODESEGMENTMOVBX,KA-80MOVAX,KAMOD100MOV

CX,KA/100MOVDH,01100100BSHR2┇CODEENDS2、逻辑运算符逻辑运算符有:与(AND)、或(OR)、非(NOT)和异或(XOR)例4.17AND、OR、NOT、XOR逻辑运算的表达式

DATASEGMENTPORTEQU81HDATAENDSCODESEGMENTMOVAL,NOT0FFHMOVBL,8CHAND73HMOVAH,8CHOR73HMOVCH,8CHXOR73H┇CODEENDS3、关系运算符共有6个,它们为:EQ(相等),NE(不等),LT(小

于),GT(大于),LE(小于或等于),GE(大于或等于)注:1)关系运算符的两个操作数必须是数字或者是同一段内的两个存储器地址。2)关系为真,对于字操作数而言,结果为0FFFFH;关系为假,结果为0例:MOVBX,PORT_VAL

GE5若PORT_VAL≥5,则汇编后为:MOVBX,0FFFFH若PORT_VAL<5,则汇编后为:MOVBX,0例4.18用OFFSET返回标号或变量偏移地址值的表达式DATASEGMENT┇DAT1DB81HDATAENDSCODESEGMENTMOVSI

,OFFSETLAB1┇LAB1:MOVBX,OFFSETDAT1┇CODEENDS4、分析运算符分析运算符有:OFFSET、SEG、TYPE、LENGTH、SIZE(1)OFFSET格式:OFFSET变量或标号功能:返回变量或标号的偏移地址部分。(2)SEG格式:

SEG变量或标号功能:返回变量或标号所在段的段基值。(3)TYPE格式:TYPE变量或标号功能:返回变量或标号的类型属性值。表4-1TYPE运算符返回值例4.19TYPE加在变量和标号前的表达式DATAS

EGMENTAA1DB20H,30HAA2DW0438HAA3DD?DATAENDSCODESEGMENTLL1:MOVAH,TYPEAA1MOVBH,TYPEAA2ADDAL,TYPEAA3MOVBL,TYPELL1CODEE

NDS(4)LENGTH格式:LENGTH变量功能:返回变量的长度,即以DUP形式表示的第一组变量被重复设置的次数。例4.20LENGTH加变量的表达式DATASEGMENTBB1DW100DUP(?)BB2DW1,2,3BB3DB‘ABCD’DATAENDSCODESEG

MENTMOVCX,LENGTHBB1MOVBL,LENGTHBB2MOVAL,LENGTHBB3。。。。CODEENDS(5)SIZE格式:SIZE变量功能:返回变量的大小,即TYPE×LENGTH的值。也就是说,SIZE=TYPE×LENGTH把例4.20中含有LENG

TH表达式改为SIZE表达式,即:MOVCX,SIZEBB1MOVBL,SIZEBB2MOVAL,SIZEBB3关于TYPE、LENGTH和SIZE的含义举例•对于“W1DW20DUP(3,10DUP(7))”,则TYPEW1=2,

LENGTHW1=20,SIZEW1=40;•对于“W2DW8,20DUP(3,10DUP(7))”,则TYPEW2=2,LENGTHW2=1,SIZEW2=2;•对于“B1DB20DUP(3,10DUP(7))”,则TYPEB1=1,LENGTH

B1=,SIZEB1=;•对于“B2DB8,20DUP(3,10DUP(7))”,则TYPEB2=,LENGTHB2=,SIZEB2=。5、修改属性运算符(综合运算符)修改属性运算符有:段操作符、PTR、THIS、HI

GH、LOW、SHORT(1)段操作符格式:段寄存器名:存储器操作数功能:临时指定存储器操作数的段归属。例如,“MOVAX,ES:[BX]”表示该存储单元的段基值取自ES,而不是隐含的DS。(2)PTR格式:类型PTR变量距离PTR标号例如,指令“MOV[BX],5”的含义是将

常数5送入存储单元[BX]中。该存储单元的偏移地址由BX确定,段基值隐含为DS。但汇编程序无法确定常数5是字节还是字,也无法确定存储单元[BX]的内容是字节还是字,所以无法操作。MOVBYTEPTR[BX],5例4.21带PTR

表达式的变量DATASEGMENTCC1DB16H,36HCC2DW1122H,3344HDATAENDSCODESEGMENTLL1:MOVAX,WORDPTRCC1MOVBL,BYTEPTRCC2MOVBYTEPTR[BX],10HMOVWORDPTR[BX],10H┇J

MPFARPTRLL1┇CODEENDS(3)THIS功能:临时指定当前地址处变量或标号的类型。格式:变量EQUTHIS类型标号EQUTHIS距离例如:DATA1EQUTHISBYTETABLEDW200DUP(?)

又如:LL1EQUTHISFARMOVAX,100(4)SHORT用来指出转移类指令中目的地址的属性,并规定要转的目的地址与本指令之间距离在-128~+127之间。格式:SHORT标号(5)HIGH和

LOW它们称为字节分离运算符格式:HIGH变量或标号LOW变量或标号例如,HIGH1234H的操作结果为12H。LOW1234H的操作结果为34H。例4.22带HIGH和LOW表达式的变量DATASEGMENTBB1EQU1234HBB2EQU0A0B

0HDATAENDSCODESEGMENTMOVAH,HIGHBB1MOVBL,LOWBB2CODEENDS7)注意点:(1)注意表达式中各运算符和操作符的优先级从高到低排列如下:①圆括号,尖括号,方括号,

圆点符,LENGTH,SIZE②PTR,OFFSET,SEG,TYPE,THIS,冒号③*,/,MOD,SHL,SHR④HIGH,LOW⑤+,-⑥EQ,NE,LT,LE,GT,GE⑦NOT⑧AND⑨OR,XOR⑩SHORT(2)注意数制统一如:表达式23HAND45HOR67H可表示成:00

100011BAND01000101BOR01100111B其结果为01100111B。6)其它运算符其它运算符如:圆括号、尖括号、方括号、圆点符等4.6宏定义、宏调用和宏扩展宏(MACRO)是源程序中一段有独立

功能的程序代码、它只需在源程序中定义一次,就可以多次用一条宏指令来调用它。宏定义是用伪指令来实现的。其格式为:MACROּENDM形式参数1,形式参数2,…宏指令名宏定义体其中MACRO和ENDM是一

对伪指令说明符,这对伪指令之间是宏定义——一组有独立功能的程序代码。Macro-name经宏定义定义后的宏指令就可以在源程序中调用,这种对宏指令的调用称宏调用,宏调用的格式为:Macro-name实际参数1,实际参

数2,….当源程序被汇编时,汇编程序将对每个宏调用作宏展开。宏展开就是用宏定义体取代源程序中的宏指令名,而且用实在参数一一取代宏定义的形式参数。例:宏定义带形式参数宏定义:FOOMACROP1,P2,P3MOVAX,P

1P2P3ENDM宏调用:FOOWORD_VAR,INC,AX宏展开:+MOVAX,WORD_VAR+INCAX子程序调用和宏调用工作方式的区别子程序调用工作方式:X←A,y←BCALLQx←C,y←DCALLQ主程序Q:

...RET子程序Q(x,y)执行时调用宏调用工作方式:QA,BQC,D主程序汇编时展开Q(A,B)Q(C,D)QMACROx,yENDM子程序调用和宏调用工作方式的区别1.宏指令调用比子程序调用执行速度快。2.过程调用使用CALL语句实现,在CPU执行时进行

处理,宏指令调用由宏汇编软件MASM进行处理。3.子程序比宏指令节省内存空间。用宏指令得到的目标代码长,占内存空间大,而且宏调用的次数越多,所占内存空间越大;用子程序占内存空间小,而且不会随调用次数的增加而增加,

但执行时间长。4.宏指令比子程序灵活。4.7DOS和BIOS调用操作系统MS-DOS的结构用户用户程序命令处理模块磁盘管理模块基本输入输出模块软件中断和系统调用键盘命令COMMAND.COMIBMDOS.COMIBMBIO.COMROMBIOS系统功能调用的概念MS-DOS是80

86、8088微机系统广泛使用的一种操作系统,它提供了很多可供用户调用的功能子程序,包括控制台输入输出、文件管理、进程管理等。他们为用户的汇编语言程序设计提供了许多方便。用户可以在自己的程序中直接调用这些功能,而无须在自行编写。系统软

件中提供的功能调用有两种,一种称为DOS(DiscOperationSystem)功能调用(也称高级调用),另一种称为BIOS(BasicInputandOutputSystem)功能调用(也叫低级调用)。用户在调用这

些系统服务程序时,不是CALL命令,而是采用软中断INTn来实现。其中,常用软中断指令有8条,他们的中断类型码是20H-27H。1.常用的DOS软中断软中断指令功能入口参数出口参数INT20H程序正常退出无无INT21H系统功能调用AH=功能号,相应入口号相应出口号INT2

2H结束退出INT23HCtrl+Break处理INT24H出错退出INT25H读磁盘AL=驱动器号CX=读入扇区数DX=起始逻辑扇区号DS:BX=内存缓冲区地址CF=0成功CF=1出错INT26H写磁盘AL=驱动器号CX=写入扇区数DX=起始逻辑扇区号DS:BX=内存缓冲区地址CF=0成功C

F=1出错INT27H驻留退出DS:BX=程序长度INT2lH功能大致可以分为四个方面:设备管理、目录管理、文件管理和其它。D0S系统功能调用的使用方法如下:①AH←功能号;②在其它寄存器中放入该功能所要求的入口参数;③执行INT21H指令;④分析出口参数。2.DOS系统功能

调用都是用软中断指令INT21H来实现的。(1)显示①单字符显示2号和6号功能调用可实现将字符在屏幕上显示出来。它们的主要区别在于:2号功能调用在显示期间检测Ctrl-Break键,6号功能调用不检测Ctrl-Break键。这

两个功能调用的入口参数是把要显示的ASCII码值送入DL寄存器。调用格式举例:MOVDL,‘*’MOVAH,2INT21H调用结果在屏幕上当前光标处显示‘*’。②字符串显示(9号功能调用)在9号功能调用时,要求DS:DX指向字符串地址的首址,并且字符串必须以‘$’字符为结束符。注

意回车的ASCII码是0DH,换行的ASCII码是0AH。调用格式举例:在屏幕上显示‘HOWAREYOU?’字符串DATASEGMENTCREQU0DHLFEQU0AHDAT1DB‘HOWAREYOU?’,CR,LF,‘$’DATAENDSCODESEGMENTASSUMECS

:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETDAT1;DS:DX指向字符串DAT1MOVAH,9;9号功能调用INT21HMOVAH,4CH;返回DOSINT21HCODEEN

DSENDSTART(2)键盘功能调用AH功能入口参数出口参数1从键盘输入一个字符,并在屏幕上回显,检查Ctrl+Bteak键AL=字符6直接控制台输入/输出字符,回显,不检查Ctrl+Break键DL=0FFHAL=字符7直接键盘输入字符,无回显,不检查Ctrl+Bre

ak键AL=字符8键盘输入一个字符,无回显,检查Ctrl+Break键AL=字符0AH输入字符串到内存缓冲区DS:DX=缓冲区首址0BH检查键盘输入状态AL=FFH有键入AL=0无键入0CH清键盘缓冲区,调用键盘输入功能AL=键盘功能号(1,

6,7,8,A)①键盘输入单字符并显示入口参数:AH=01;功能调用号返回参数:AL=输入字符中断号:(INT)21H功能:等待键入,检查是否是Ctr-Break键,是,退出。不是将键入的字符送AL寄存器并显示。MOVAH,1;等待键入字符INT21

H键盘输入字符串调用号:0AH,入口参数:DS:DX=缓冲区首地址功能:将键盘键入的以ENTER(0DH)结尾的字符串写到DS:DX指定的内存区。为此,应先用程序设置一内存区。例:BUFDB20;第一个字节设的最大长度(含0DH)DB?;第二个字节空出,由DOS最后填实际长

度(不含0DH)DB20DUP(?);第三字节开始写字符MOVDX,OFFSETBUFMOVAH,0AHINT21H注:键入字符超出缓冲区范围,超出的字符丢失且响铃警告,若小于设置范围,保持原来内容。14H?H41H0DH…..BUF+01222实际长

度19返回操作系统调用号:4CH,无入口参数。MOVAH,4CHINT21H结束当前程序,返回操作系统。

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?