X86汇编语言程序设计.ppt

上传人:壹****1 文档编号:569192225 上传时间:2024-07-28 格式:PPT 页数:57 大小:551.55KB
返回 下载 相关 举报
X86汇编语言程序设计.ppt_第1页
第1页 / 共57页
X86汇编语言程序设计.ppt_第2页
第2页 / 共57页
X86汇编语言程序设计.ppt_第3页
第3页 / 共57页
X86汇编语言程序设计.ppt_第4页
第4页 / 共57页
X86汇编语言程序设计.ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《X86汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《X86汇编语言程序设计.ppt(57页珍藏版)》请在金锄头文库上搜索。

1、第第4 4章章 80X8680X86汇编语言程序设计汇编语言程序设计本章的内容有:MASM宏汇编语句结构以及开发过程MASM汇编语言表达式、运算符程序段的定义和属性复杂数据结构宏汇编基本汇编语言程序设计子程序设计高级汇编语言程序设计DATA SEGMENT W1 DB 00H,11H,22H,33H,$ W2 DW 4142H,0A0BHDATA ENDSSTACK1 SEGMENT DW 100H DUP(0)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA, SS:STACK1START: MOV AX,DATA MOV DS,AX CODE E

2、NDSEND START4.1 MASM4.1 MASM宏汇编语句结构以及开发过程宏汇编语句结构以及开发过程 4.1.1 汇编语言程序的语句类型和格式1语句的类型硬指令语句硬指令语句( (指令性语句指令性语句) ) 是指能产生目标代码,CPU可以执行的,能完成特定功能的语句,它主要由CPU指令组成。伪指令语句(指示性语句)伪指令语句(指示性语句) 是一种不产生目标代码的语句,它仅仅在汇编过程中告诉汇编程序应如何汇编。定义变量,定义过程,给变量分配存储单元,给数字或表达式命名等。所以伪指令语句是汇编程序在汇编时用的,不产生机器码。宏指令语句宏指令语句它是一个指令序列,汇编时凡有宏指令语句的地方都

3、将用相应的指令序列的目标代码插入。 指令性语句指令性语句是计算机可执行的是计算机可执行的, ,而而伪指令伪指令不能不能执行执行, ,用来定义变量用来定义变量, ,分配存储单元分配存储单元, ,指示程序开始指示程序开始和结束等。和结束等。这两种语句的差别:这两种语句的差别: 在形式上:在形式上:带不带冒号带不带冒号, ,是否可转向它是否可转向它. . 在本质上:在本质上:汇编时能否形成对应的机器码汇编时能否形成对应的机器码. .2语句的格式语句的格式汇编语言源程序由语句序列构成。汇编语言源程序由语句序列构成。汇编语言源程序中的每条语句一般占一行,每行不超汇编语言源程序中的每条语句一般占一行,每行

4、不超过过132132个字符(个字符(MASM 6.0MASM 6.0开始可以是开始可以是512512个字符),个字符),(1 1)执行性语句)执行性语句 标号:硬指令助记符标号:硬指令助记符 操作数,操作数;注释操作数,操作数;注释(2 2)说明性语句)说明性语句 名字名字 伪指令助记符伪指令助记符 参数,参数参数,参数 ;注释;注释汇汇编编语语言言中中,用用来来标标识识某某种种数数据据结结构构名名称称 (如如变变量、标号、过程名等量、标号、过程名等) 的有效字符序列称为的有效字符序列称为标识符。标识符。MASM 的标识符组成规则如下:的标识符组成规则如下:(1) 标识符有效长度标识符有效长度

5、131个字符;个字符;(2) 标识符由字母标识符由字母 (大写或小写的英文字母大写或小写的英文字母),数字或,数字或 某些特殊字符如某些特殊字符如 $ : ? 等组成等组成(3) 第一个字符必须是字母,不允许用数字开头,也第一个字符必须是字母,不允许用数字开头,也 不允许用特殊符号单独作为标识符;不允许用特殊符号单独作为标识符;(4) 标识符不能使用系统专用字,如标识符不能使用系统专用字,如 AX (寄存器名寄存器名) ,MOV (助记符助记符) 等。等。4.1.2 4.1.2 汇编语言的程序格式汇编语言的程序格式在在实实地地址址模模式式和和虚虚拟拟80868086模模式式下下,按按照照逻逻辑

6、辑段段组组织织程程序,具有代码段、数据段、附加段和堆栈段。序,具有代码段、数据段、附加段和堆栈段。一一个个汇汇编编语语言言源源程程序序可可以以包包含含若若干干个个代代码码段段、数数据据段段、堆栈段或附加段,段与段之间的顺序可随意排列。堆栈段或附加段,段与段之间的顺序可随意排列。需需独独立立运运行行的的程程序序必必须须包包含含一一个个代代码码段段,并并指指示示程程序序执行的起始位置,一个程序只有一个起始位置。执行的起始位置,一个程序只有一个起始位置。所所有有的的可可执执行行性性语语句句必必须须位位于于某某一一个个代代码码段段内内,说说明明性语句可根据需要位于任一段内。性语句可根据需要位于任一段内

7、。两种格式书写两种格式书写第一种格式是从第一种格式是从MASM 5.0开始支持的开始支持的简化段定义格简化段定义格式式(但其中的两个指令(但其中的两个指令 .STARTUP和和 .EXIT是是6.0版版本才引入的)。本才引入的)。第二种格式是第二种格式是MASM 5.0以前版本就具有的以前版本就具有的完整段定完整段定义格式义格式。例例4.1 4.1 简化段定义的源程序格式简化段定义的源程序格式 STACKSTACK;定义堆栈段;定义堆栈段 DATA DATA ;定义数据段;定义数据段 STRING DB STRING DB HelloHello,Everybody !Everybody !,0

8、DH0DH,0AH0AH,$ $ ;在数据段定义要显示的字符串;在数据段定义要显示的字符串 CODE CODE ;定义代码段;定义代码段 STARTUPSTARTUP ;说明程序起始位置,并建立;说明程序起始位置,并建立DSDS、SSSS内容(注内容(注1 1) MOVMOVDXDX,OFFSET STRINGOFFSET STRING;指定字符串在数据段的偏移地址;指定字符串在数据段的偏移地址 MOVMOVAHAH,9 9 INT INT21H21H;利用;利用DOSDOS功能调用显示信息功能调用显示信息 EXIT 0 EXIT 0 ;程序结束点,返回;程序结束点,返回DOSDOS(注(注2

9、 2) ENDEND;汇编结束(注;汇编结束(注3 3)DATA SEGMENT W1 DB 00H,11H,22H,33H,$ W2 DW 4142H,0A0BHDATA ENDSSTACK1 SEGMENT DW 100H DUP(0)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA, SS:STACK1START: MOV AX,DATA MOV DS,AX CODE ENDSEND START完完整整段段定定义义格格式式4.1.3 4.1.3 汇编语言程序的开发过程汇编语言程序的开发过程 源程序编辑源程序编辑源程序汇编源程序汇编目标文件链接目

10、标文件链接可执行文件调试可执行文件调试.ASM.OBJ.EXE可执行文件可执行文件MASMLT401A.ASM/ML LT401A.ASM LINKLT401A.OBJ DEBUG LT401A.EXE修改源代码正确4.2 MASM4.2 MASM汇编语言表达式、运算符汇编语言表达式、运算符4.2.1 4.2.1 常量、运算符及表达式常量、运算符及表达式1.1.常量常量(1)(1)数字常量数字常量二进制常量二进制常量, ,以以B B结尾结尾八进制常量八进制常量, ,以以Q Q结尾结尾十进制常量十进制常量, ,以以D D结尾或省略结尾或省略十六进制常量十六进制常量, ,以以H H结尾结尾, ,如

11、如0A8C6H0A8C6H(2)(2)字符串常量字符串常量用单引号引起来的字符或字符串也代表常数。例如用单引号引起来的字符或字符串也代表常数。例如: : A A ;汇编时被翻译成对应的;汇编时被翻译成对应的ASCIIASCII码码41H41HBCDEBCDE ;汇编时被翻译成对应的;汇编时被翻译成对应的ASCIIASCII码码42H,43H,42H,43H, ;44H,45H44H,45H(3 3)符号常量)符号常量利用一个标识符表达的一个数值。常数若使用有意利用一个标识符表达的一个数值。常数若使用有意义的符号名来表示,可以提高程序的可读性,同时义的符号名来表示,可以提高程序的可读性,同时更具

12、有通用性。更具有通用性。MASMMASM提供等价机制,用来为常量定义符号名,符号提供等价机制,用来为常量定义符号名,符号定义伪指令有定义伪指令有“EQUEQU”和和“”。 运算符类型运算符类型 运算符号及说明运算符号及说明 算术运算符算术运算符 + +(加)(加) (减)(减) * *(乘)(乘) / /(除)(除) MODMOD(取余)(取余) 逻辑运算符逻辑运算符 ANDAND(与)(与) OROR(或)(或) XORXOR(异或)(异或) NOTNOT(非)(非) 移位运算符移位运算符 SHLSHL(逻辑左移)(逻辑左移) SHRSHR(逻辑右移)(逻辑右移) 关系运算符关系运算符EQE

13、Q(相等)(相等) NENE(不相等)(不相等) GTGT(大于)(大于) LTLT(小于)(小于) GEGE(大于等于)(大于等于) LELE(小于等于)(小于等于) 高低运算符高低运算符HIGHHIGH(高字节)(高字节) LOWLOW(低字节)(低字节) HIGHWORDHIGHWORD(高字)(高字) LOWWORDLOWWORD(低字)(低字)2运算符运算符3 3、运算符的优先级、运算符的优先级 优先级优先级 运算符运算符 1 1()() LENGTH SIZE WIDTH MASK LENGTH SIZE WIDTH MASK 2 2PTR PTR OFFSETOFFSET SEG

14、 TYPE THIS SEG TYPE THIS : 3 3HIGH LOWHIGH LOW 4 4* / MOD SHL SHR* / MOD SHL SHR 5 5+ + 6 6EQ NE GT LT GE LEEQ NE GT LT GE LE 7 7NOTNOT 8 8ANDAND 9 9OR XOROR XOR 10 10SHORTSHORT4.4.表达式表达式 表达式表达式是常量、寄存器、标号、变量与一些运算符是常量、寄存器、标号、变量与一些运算符组合的序列组合的序列, ,分分数字表达式数字表达式和和地址表达式地址表达式两种。汇编两种。汇编时按一定的优先规则对表达式进行计算后可得到

15、一时按一定的优先规则对表达式进行计算后可得到一个数值或一个地址。个数值或一个地址。(1)数字表达式()数字表达式(number expression) 数字表达式一般是指由运算符连接的各种常量所构数字表达式一般是指由运算符连接的各种常量所构成的表达式。成的表达式。例如:例如:MOV DX ,(6*A-B)/2源操作数源操作数(6*A-B)/2是一个表达式。若设变量是一个表达式。若设变量A的值的值为为1,变量,变量B的值为的值为2,则此表达式的值为,则此表达式的值为(6*1-2)/22,是一个数字结果,此表达式是数字表达式。,是一个数字结果,此表达式是数字表达式。(2)地址表达式(地址表达式(a

16、ddress expressions) 地址表达式的结果是一个存储单元的地址。地址表达式的结果是一个存储单元的地址。例如,例如,MOV AX, ES: BX+SI+1000H其中,其中,BX+SI+1000H为地址表达式,结果是一个存为地址表达式,结果是一个存储单元的地址。储单元的地址。4.2.2 变量及其属性变量及其属性1变量定义伪指令变量定义伪指令变量变量是存储器中某个数据区的名字,在指令中可以是存储器中某个数据区的名字,在指令中可以作为存储器操作数。作为存储器操作数。变量定义伪指令可为变量申请固定长度的存储空间,变量定义伪指令可为变量申请固定长度的存储空间,并可以同时将相应的存储单元初始

17、化。该类伪指令并可以同时将相应的存储单元初始化。该类伪指令是最经常使用的伪指令。是最经常使用的伪指令。格式:格式: 变量名变量名 伪指令伪指令 初值表初值表说明:说明:变量名变量名是用户自定义标识符,表示初值表首元素的逻辑地址,是用户自定义标识符,表示初值表首元素的逻辑地址,即用这个符号表示地址,常称为符号地址。即用这个符号表示地址,常称为符号地址。初值表初值表是用逗号分隔的参数,主要由数值常量,表达式或是用逗号分隔的参数,主要由数值常量,表达式或 ?、DUP组成。其中组成。其中?表示初值不确定,即未赋初值;重复初表示初值不确定,即未赋初值;重复初值可以用值可以用DUP进行定义。进行定义。DU

18、P的格式为:的格式为: 重复次数重复次数 DUP(重复参数)(重复参数)(1)定义字节单元伪指令)定义字节单元伪指令DB功能功能:定义变量的类型为:定义变量的类型为BYTE,给变量分配字节或字节串。,给变量分配字节或字节串。要求要求:初值表中每个数据一定是字节量。例如:初值表中每个数据一定是字节量。例如: DATA SEGMENT ;数据段;数据段 X DB a, 5 DB 2 DUP(100),),? Y DB ABC DATA ENDS(2)定义字单元伪指令)定义字单元伪指令DW功能:功能:定义变量的类型为定义变量的类型为WORD,给变量分配一个或,给变量分配一个或多个字单元,并可以将它们

19、初始化为指定值。多个字单元,并可以将它们初始化为指定值。要求:要求:初值表中每个数据一定是字初值表中每个数据一定是字 (Word)。)。(3)定义双字单元伪指令)定义双字单元伪指令DD功能功能:定义变量的类型为:定义变量的类型为DWORD,用于分配一个或,用于分配一个或多个双字单元,并将它们初始化为指定值。多个双字单元,并将它们初始化为指定值。要求要求:初值表中每个数据是一个:初值表中每个数据是一个32位的双字。位的双字。2 变量和标号的属性变量和标号的属性变量、标号、段名及过程名都表示的是地址,那么,这些标号变量、标号、段名及过程名都表示的是地址,那么,这些标号和名字一经定义便具有以下三种属

20、性:和名字一经定义便具有以下三种属性:段值段值:标号和名字对应存储单元所在段的段地址。:标号和名字对应存储单元所在段的段地址。偏移值偏移值:标号和名字对应存储单元所在段的段内偏移地址。:标号和名字对应存储单元所在段的段内偏移地址。类型类型:标号、子程序名的类型可以是:标号、子程序名的类型可以是NEAR(近)和(近)和FAR(远),分别表示段内或段间;变量名的类型可以是(远),分别表示段内或段间;变量名的类型可以是BYTE(字节),(字节),WORD(字)和(字)和DWORD(双字)等。(双字)等。4.3 程序段的定义和属性程序段的定义和属性1. 1. 段定义伪指令段定义伪指令SEGMENT/E

21、NDSSEGMENT/ENDS2. 2. 指定伪指令指定伪指令ASSUMEASSUME3. 3. 源程序结束伪指令源程序结束伪指令1. 段定义伪指令段定义伪指令SEGMENT/ENDS格式:格式:段名段名 SEGMENT 定位定位 组合组合 字长字长 类别类别 (段体段体) ;语句序列语句序列 段名段名 ENDS 伪指令名伪指令名 SEGMENT 和和 ENDS 是本语句的关键是本语句的关键字,不可以默认,并且总是成对出现的字,不可以默认,并且总是成对出现的。语句中段名。语句中段名是必选项,定位类型、组合类型、字长选择、分类名是必选项,定位类型、组合类型、字长选择、分类名为可选项。为可选项。

22、段名是程序员为该段起的名字,不能省略,用段名是程序员为该段起的名字,不能省略,用来指来指出为该段分配的存储区的段地址,一个段开始与结尾出为该段分配的存储区的段地址,一个段开始与结尾用的段名应一致。用的段名应一致。2. 2. 指指定伪指令定伪指令ASSUMEASSUME格式格式:ASSUME 段寄存器:段名段寄存器:段名 ,段寄存,段寄存器:段名,器:段名,功能:功能:说明源程序中定义的段由哪个段寄存器说明源程序中定义的段由哪个段寄存器去寻址。段寄存器可以是去寻址。段寄存器可以是 CS,SS,DS、ES注意:注意:格式中,格式中,ASSUME 是伪指令名,是语是伪指令名,是语言中的关键字,不可默

23、认。段寄存器名后面必言中的关键字,不可默认。段寄存器名后面必须有须有冒号冒号,如果分配的段名不止一个,则应用,如果分配的段名不止一个,则应用逗号逗号分开。分开。 下面是一段源程序:下面是一段源程序: DATA SEGMENT W1 DB 00H,11H,22H,33H,$ W2 DW 4142H,0A0BH DATA ENDS STACK1 SEGMENT DW 100H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATA MOV DS,AX CODE ENDS END STAR

24、T问题:段寄存器的装入问题:段寄存器的装入 ASSUME 语语句句只只建建立立当当前前段段和和段段寄寄存存器器之之间间的的联联系系,但但并并不不能能将将各各段段的的段段基基值值装装入入各各个个段段寄寄存存器器。段段基基值值的的装装入入是是用用程程序序的的办办法法,六六个个段段寄寄存存器器的的装装入入也也不不相相同同。除除代代码码段段 CS和和堆堆栈栈段段 SS 外外,其其他他定定义义的的段段寄寄存存器器(DS或或ES) 由由用用户户在在代代码码段段起起始始处用指令进行段基址的装入。例如:处用指令进行段基址的装入。例如: MOV AX,DATA MOV DS,AX3. 源程序结束伪指令源程序结束

25、伪指令格式格式:END 表达式表达式功功能能:该该语语句句标标志志整整个个程程序序的的结结束束,是是源源程程序序的的最最后后一一条条语语句句。表表达达式式为为程程序序入口指令的标号。入口指令的标号。例如例如:END START返回本节返回本节4.6 4.6 基本汇编语言程序设计基本汇编语言程序设计汇汇编编语语言言源源程程序序主主体体(代代码码段段)可可以以有有顺顺序序、分分支、循环、子程序和宏等结构。支、循环、子程序和宏等结构。早早期期版版本本的的汇汇编编程程序序不不直直接接支支持持结结构构化化程程序序设设计计,可可以以用用微微处处理理器器指指令令系系统统中中的的转转移移指指令令、循循环环指指

26、令令、子子程程序序调调用用及及返返回回指指令令,实实现现程程序序的的各各种种结结构形式。构形式。一一 概述概述1 汇编语言程序设计的一般步骤汇编语言程序设计的一般步骤2 流程图流程图返回本章首页返回本章首页 汇编语言程序设计的一般步骤汇编语言程序设计的一般步骤汇编语言程序设计一般有以下几个步骤:汇编语言程序设计一般有以下几个步骤:1分析问题,确定算法分析问题,确定算法2绘制流程图绘制流程图3根据流程图编制程序根据流程图编制程序4调试程序调试程序返回本节返回本节流程图1 1流程图的概念流程图的概念流流程程图图是是由由特特定定的的几几何何图图形形、指指向向线线、文文字字说说明明来来表表示示数数据据

27、处处理理的的步步骤骤,形形象象描描述述逻逻辑辑控控制制结结构构以以及及数数据据流流程程的的示示意意图图。流流程程图图具具有简洁、明了、直观的特点。有简洁、明了、直观的特点。2 2流程图符号表示流程图符号表示(1 1)起止框:表示程序)起止框:表示程序的开始和结束。的开始和结束。起止框起止框(2)判断框)判断框 (3)处理框)处理框 (4)调用框)调用框 (5)指向线)指向线 返回本节返回本节二二 顺序程序设计顺序程序设计例例4.16 4.16 求两个数的平均值。这两个数分别放在求两个数的平均值。这两个数分别放在X X单元单元和和Y Y单元中,而平均值放在单元中,而平均值放在Z Z单元中。单元中

28、。DATA SEGMENTDATA SEGMENT X DB X DB 8CH 8CH Y DB Y DB 64H 64H Z DB Z DB ?DATA ENDSDATA ENDSSTART:MOVSTART:MOV ALAL,X X;AL8CHAL8CH ADD ADD ALAL,Y Y;AL8CH+64HAL8CH+64H MOV MOV AHAH,00H 00H ;AH00HAH00H ADC ADC AHAH,00H 00H ;进位送;进位送AHAH MOV MOV BLBL,2 2 ;除数;除数2BL2BL DIV DIV BL BL ;AXAX除以除以BLBL的内容,的内容, ;

29、商;商ALAL,余数,余数AHAH MOV MOV Z Z,AL AL ;结果送入;结果送入Z Z单元单元 思考思考 从键盘读入两个一位数从键盘读入两个一位数( (假设按下的肯假设按下的肯定是数字键)定是数字键),编程序显示它们的乘积。编程序显示它们的乘积。CODE SEGMENTCODE SEGMENT ASSUME CS:CODE ASSUME CS:CODESTART:MOV AH,1START:MOV AH,1 INT 21H INT 21H MOV BL,AL MOV BL,AL MOV AH,1 MOV AH,1 INT 21H INT 21H SUB AL,30H SUB AL,

30、30H SUB BL,30H SUB BL,30H MUL BL ; MUL BL ;积在积在AXAX中中 MOV BL,10MOV BL,10 DIV BL DIV BL ADD AX,3030H ADD AX,3030H MOV BX,AXMOV BX,AX MOV DL,BL MOV DL,BL MOV AH,2 MOV AH,2 INT 21H ; INT 21H ;输出十位数输出十位数 MOV DL,BHMOV DL,BH MOV AH,2 MOV AH,2 INT 21H ; INT 21H ;输出个位数输出个位数 MOV AH,4CHMOV AH,4CH INT 21H INT

31、21H ;返回;返回DOSDOSCODE ENDSCODE ENDS END START END START 三三 分支程序设计分支程序设计单分支单分支IFIFTHENTHEN双分支双分支IFIFTHENTHENELSEELSE条件转移条件转移JccJcc和无条件转移和无条件转移JMPJMP指令用于实现程序指令用于实现程序的分支结构。的分支结构。JMPJMP指令仅实现了转移到指定位置,指令仅实现了转移到指定位置,JccJcc指令则可根据条件转移到指定位置或不转指令则可根据条件转移到指定位置或不转移而顺序执行后续指令序列。移而顺序执行后续指令序列。单分支与双分支1 1单分支结构单分支结构例例4.

32、18 4.18 计算计算AXAX中符号数绝对值的程序段。中符号数绝对值的程序段。 CMPCMPAXAX,0 0 JGE JGENONNEG NONNEG ;分支条件:;分支条件:AX0AX0 NEG NEGAXAX ;条件不满足,负数,;条件不满足,负数, ;执行分支体进行求补;执行分支体进行求补NONNEGNONNEG:MOV RESULTMOV RESULT,AX AX ;条件满足,;条件满足, ;为正数,保存结果;为正数,保存结果另一种方法:另一种方法: CMP AX CMP AX,0 0 JL JLYESNEGYESNEG ;分支条件:;分支条件:AX 0AX 0 思考:符号函数思考:

33、符号函数 y = 0 x = 0 其中其中 x 为为 8 位带符号数。位带符号数。 -1 x 0 转移转移 MOV AL,0 ;0 送送 YY JMP JUS2 ;隔离;隔离 JUSl: MOV AL,1 ;1 送送YY JUS2: MOV YY,AL MOV AH,4CH INT 21H CODE ENDS END START四四 循环程序设计循环程序设计1 1循环结构循环结构循循环环初初始始部部分分:开开始始循循环环准准备备必必要要的的条条件件,如如循环次数、循环体需要的初始值等。循环次数、循环体需要的初始值等。循循环环体体部部分分:是是循循环环工工作作的的主主要要部部分分,是是为为完完成

34、某种特定功能而设计的重复执行的程序段。成某种特定功能而设计的重复执行的程序段。修修改改部部分分:对对循循环环条条件件、相相关关信信息息(如如计计数数器器的值、操作数地址等)进行修改的程序段。的值、操作数地址等)进行修改的程序段。循循环环控控制制部部分分:判判断断循循环环条条件件是是否否成成立立,决决定定是否继续循环。是否继续循环。例:现将以例:现将以AREA1AREA1为首地址的为首地址的100100个字节数据搬移到个字节数据搬移到以以AREA1AREA1为首地址的内存中去。为首地址的内存中去。DATA SEGMENT AREA1 DB 100DUP(?) AREA2 DB 100DUP(?)

35、DATA ENDSCODE SEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV SI,OFFSET AREA1 MOV DI,OFFSET AREA2 MOV CX,100AGAIN:MOV AL,SI MOV DI,AL INC SI INC DI LOOP AGAIN MOV AH,4CH INT 21HCODE ENDS END START补充 常用的DOS功能调用DOS系统功能调用的方法一般可分为以下几步:系统功能调用的方法一般可分为以下几步: 设置所要调用功能的设置所要调用功能的入口参数入口参数。 在在AH寄存器寄存

36、器中存入所要调用功能的功能号。中存入所要调用功能的功能号。 INT 21H指令自动转入中断子程序入口。指令自动转入中断子程序入口。 相应中断子程序运行完毕,可按规定取得相应中断子程序运行完毕,可按规定取得出口参数出口参数。 1单字符输入(单字符输入(1号调用)号调用)2单字符显示(单字符显示(2号调用)号调用)3结束调用(结束调用(4CH号调用)号调用)4显示字符串(显示字符串(9号调用)号调用)常用的DOS功能调用有以下4种:1单字符输入(单字符输入(1号调用)号调用)格式:格式:MOV AH,1 INT21H功能:功能:从键盘输入字符的从键盘输入字符的ASCII码送入寄存器码送入寄存器AL

37、中,中,并送显示器显示。并送显示器显示。 2单字符显示(单字符显示(2号调用)号调用)格式格式:MOV DL,待显示字符的待显示字符的ASCII码码 MOV AH,2 INT 21H功能功能:将:将DL寄存器中的字符送显示器显示。寄存器中的字符送显示器显示。3结束调用(结束调用(4CH号调用)号调用)格式格式:MOVAH,4CH INT21H功能功能:终止当前程序并返回调用程序。一:终止当前程序并返回调用程序。一般用在源程序的结束语句。般用在源程序的结束语句。4显示字符串(显示字符串(9号调用)号调用)格式格式:LEA DX,待显示字符串首偏移地址待显示字符串首偏移地址 MOV AH,9 IN

38、T 21H功能功能:将当前数据区中以:将当前数据区中以结尾的字符串结尾的字符串送送显示器显示。显示器显示。例如例如: BUF DB How are you !$ MOV DX, OFFSET BUF MOV AH,9 INT 21H DATA SEGMENT STR DB Example of string display!DATA ENDSCODESEGMENTASSUME DS:DATA,CS:CODEBEGIN:MOV AX ,DATA MOV DS,AX MOV AH,4CH LEA DX,STR INT 21H MOV AH ,9 CODE ENDS INT 21H END BEGIN【例例】若要在屏幕上显示字符串若要在屏幕上显示字符串“Example of string display!”,则程序如下:则程序如下:

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

最新文档


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

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