《第6章汇编语言程序设计.pdf》由会员分享,可在线阅读,更多相关《第6章汇编语言程序设计.pdf(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 第六章第六章 子程序设计子程序设计 本章主要内容:本章主要内容: 子程序调用与返回指令子程序调用与返回指令 编制子程序的基本要求编制子程序的基本要求 子程序设计举例子程序设计举例 DOS 功能子程序调用功能子程序调用 2 子程序子程序在一个程序的不同的地方需要多次使用的某在一个程序的不同的地方需要多次使用的某 个程序段,将其进行独立编制。个程序段,将其进行独立编制。 调用与返回:调用与返回:在主程序中需要使用该功能时,就转移到在主程序中需要使用该功能时,就转移到 子程序执行,执行完后又返回原程序继续执行。这样的子程序执行,执行完后又返回原程序继续执行。这样的 程序结构称为子程序设计。程序结
2、构称为子程序设计。 6.1 调用与返回指令调用与返回指令 在汇编语言中,子程序是以“过程”的形式表示。在汇编语言中,子程序是以“过程”的形式表示。 根据被调用过程与调用程序是否在同一个段内,可以根据被调用过程与调用程序是否在同一个段内,可以 分为分为两种两种情况。情况。 3 主程序与子程序同在一个段内。这时,子程序的调用与返主程序与子程序同在一个段内。这时,子程序的调用与返 回回只只需修改指令指针需修改指令指针IP。 CODEA SEGMENT . CALL PROCA AAA: . . PROCA PROC . RET . PROCA ENDP . CODEA ENDS 段内调用与返回段内调
3、用与返回 右图中指令右图中指令CALL PROCA 就是段内调用。就是段内调用。 4 下面下面CODEB段中的段中的CALL FAR PTR PROCB就是段就是段 间调用。间调用。 CODEA SEGMENT CODEB SEGMENT . . PROCB PROC . CALL FAR PTR PROCB . BBB: . RET PROCB ENDP CODEB ENDS . CODEA ENDS 段间调用与返回段间调用与返回 调用指令与子程序分别在不同的段,这时,需要调用指令与子程序分别在不同的段,这时,需要同同 时修改时修改CS和和IP。 5 执行执行CALL指令时,先将断点压入堆栈
4、中保存,指令时,先将断点压入堆栈中保存, 然后转移到目标单元。然后转移到目标单元。 1、调用指令、调用指令 指令格式:指令格式:CALL 过程名过程名 CALL指令的执行对各标志位指令的执行对各标志位无影响无影响。 断点是调用子程序指令断点是调用子程序指令CALL的的下一条下一条指令的地址。指令的地址。 前述程序结构图中,前述程序结构图中,AAA和和BBB就是两条调用子就是两条调用子 程序指令的断点。程序指令的断点。 6 汇编指令书写格式为在汇编指令书写格式为在 CALL 之后直接书写过程名之后直接书写过程名 (1)段内调用)段内调用 (a) 段内直接调用段内直接调用 例如:例如:CALL S
5、UB1 例如:例如:CALL BX CALL CX CALL WORD PTR 30HBXSI (b)段内间接调用)段内间接调用 子程序的起始地址(偏移量)由一个子程序的起始地址(偏移量)由一个通用寄存器通用寄存器或一个或一个字字 存储单元提供存储单元提供。 7 调用指令提供一个调用指令提供一个双字双字存储单元的地址,它所指向的双存储单元的地址,它所指向的双 字存储单元内容为被调用过程的起始地址。其中,两个低字存储单元内容为被调用过程的起始地址。其中,两个低 字节存放偏移量,两个高字节存放段基值。字节存放偏移量,两个高字节存放段基值。 (b) 段间间接调用段间间接调用 例如:例如:CALL D
6、WORD PTR DISPBXDI 由于在由于在定义过程时定义过程时,对提供段间调用的过程,已经,对提供段间调用的过程,已经 说明其属性为说明其属性为FAR。因此调用时,在。因此调用时,在CALL后直接书写后直接书写 过程名,也可以在过程名前面加过程名,也可以在过程名前面加FAR属性修饰。属性修饰。 (2)段间调用)段间调用 (a)段间直接调用)段间直接调用 例如:例如: CALL PROC_NAME CALL FAR PTR PROC_NAME 8 两者都是无条件转移到目标单元,但两者都是无条件转移到目标单元,但CALL指指 令要保存“断点”,而令要保存“断点”,而JMP指令不保存断点。指令
7、不保存断点。 (3)子程序调用指令与转移指令)子程序调用指令与转移指令JMP的区别的区别 9 3、返回指令、返回指令 (2)段间返回)段间返回指令编码为指令编码为 CBH 执行该指令,将从堆栈顶部弹出两个字分别送执行该指令,将从堆栈顶部弹出两个字分别送IP和和CS中。中。 根据子程序调用指令的使用情况,返回指令也分为根据子程序调用指令的使用情况,返回指令也分为 段内返回段内返回和和段间返回段间返回。其汇编指令书写形式都是。其汇编指令书写形式都是RET ,但它们的,但它们的编码编码是是不相同不相同的。的。 一个子程序最后执行的指令一定是返回指令,但一个子程序最后执行的指令一定是返回指令,但 不一
8、定是最后一条指令不一定是最后一条指令。 (1)段内返回)段内返回指令编码为指令编码为 C3H 执行该指令,将从堆栈顶部弹出一个字送入执行该指令,将从堆栈顶部弹出一个字送入IP。 10 汇编指令格式为:汇编指令格式为:RET n 其中其中n为一个立即数,长度为为一个立即数,长度为2字节字节。并且是一个。并且是一个偶数偶数。 (1)从堆栈弹出)从堆栈弹出1个个字字送送IP(段内返回)或(段内返回)或2个个字字送送IP和和CS; (2)执行)执行 SP=(SP)+n 。将堆栈中已经用过的参数。将堆栈中已经用过的参数(n个字节个字节) 弹出舍去弹出舍去. 指令执行过程:指令执行过程: (3)带弹出值的
9、返回指令)带弹出值的返回指令 这条指令也分为这条指令也分为段内返回段内返回和和段间返回段间返回,它们的指令编码,它们的指令编码 不同,分别为不同,分别为C2 n和和CA n。 11 6.2 编制子程序的基本要求编制子程序的基本要求 1、具有一定的通用性、具有一定的通用性 2、选择适当的参数传递方法、选择适当的参数传递方法 在主程序与子程序之间传递参数,可以选择的方法有:在主程序与子程序之间传递参数,可以选择的方法有: A、使用通用寄存器、使用通用寄存器 B、使用指定的存储单元、使用指定的存储单元 C、使用堆栈、使用堆栈 选择和设计好子程序所需的各种选择和设计好子程序所需的各种入口参数入口参数和
10、和出口参数出口参数。 12 A、在主程序中保存、在主程序中保存子程序子程序中将要使用的一些寄存器的中将要使用的一些寄存器的 内容内容 . PUSH BX PUSH CX CALL SUB1 POP CX POP BX . 3、注意信息保护、注意信息保护 信息的保护可以有信息的保护可以有两种两种方法:方法: 如果在子程序中需要使用某些寄存器或存储单元,为了不如果在子程序中需要使用某些寄存器或存储单元,为了不 破坏它们原来在主程序中的值,为此需要进行信息保护。破坏它们原来在主程序中的值,为此需要进行信息保护。 13 B、在子程序中保存将要使用的一些寄存器的内容、在子程序中保存将要使用的一些寄存器的
11、内容 SUB2 PROC PUSH BX PUSH CX . ; 完成子程序功能指令序列完成子程序功能指令序列 POP CX POP BX RET SUB2 ENDP 4、正确使用堆栈、正确使用堆栈 由于堆栈中保存着主程序调用子程序时的断点地址。由于堆栈中保存着主程序调用子程序时的断点地址。 若在子程序中也使用了堆栈,注意各个数据压栈和出栈的若在子程序中也使用了堆栈,注意各个数据压栈和出栈的 顺序不能错,否则将导致数据错误和子程序返回地址错误。顺序不能错,否则将导致数据错误和子程序返回地址错误。 14 子程序名子程序名 子程序功能描述子程序功能描述 子程序的入口参数与出口参数子程序的入口参数与
12、出口参数 使用哪些寄存器和存储单元使用哪些寄存器和存储单元 本子程序是否又调用其它子程序本子程序是否又调用其它子程序 子程序的调用形式、举例子程序的调用形式、举例 5、编制子程序文件、编制子程序文件 子程序文件应包括文字说明与子程序本身子程序文件应包括文字说明与子程序本身两个两个部部 分。而文字说明一般包括:分。而文字说明一般包括: 15 6.3 子程序设计举例子程序设计举例 例例 5.5.1 将两个给定的二进制数将两个给定的二进制数(8位和位和16位位)转换为转换为ASCII 码字符串。码字符串。 主程序提供被转换的主程序提供被转换的 数据和转换后的数据和转换后的ASCII码字码字 符串的存
13、储区的首地址符串的存储区的首地址 开始开始 取出待转换数据取出待转换数据 给出存放结果首址给出存放结果首址 给出转换的位数给出转换的位数 调用转换子程序调用转换子程序 取出待转换数据取出待转换数据 给出存放结果首址给出存放结果首址 给出转换的位数给出转换的位数 调用转换子程序调用转换子程序 结束结束 主程序框图主程序框图 16 子程序完成二进制数与子程序完成二进制数与 ASCII码字符串的转换。子码字符串的转换。子 程序的入口参量有:被转换程序的入口参量有:被转换 的数据、存储的数据、存储ASCII码字符码字符 串的首址和被转换数据的位串的首址和被转换数据的位 数。数。无出口参量无出口参量。
14、BINASC 待转换的一位二进制数待转换的一位二进制数 送送AL的第的第0位位 DX= 待转换数据待转换数据 DI=存放存放ASCII码首址码首址 CX=转换的位数转换的位数 AL= (AL) 01H AL= (AL)+30H 存存ASCII码:码:(DI)= (AL) 修改指针:修改指针:DI= (DI)+1 计数:计数:CX= (CX)-1 (CX)=0? 返返 回回 N Y 子程序框图:子程序框图: 0的的ASCII码为码为30H, 1的的ASCII码为码为31H。 17 源程序的源程序的数据段数据段和和堆栈段堆栈段安排如下:安排如下: DATA SEGMENT BIN1 DB 35H
15、BIN2 DW 0AB48H ASCBUF DB 20H DUP(?) DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS *用寄存器传递参量用寄存器传递参量 *用堆栈传递参量用堆栈传递参量 *用地址表传递参量用地址表传递参量 由于由于参量的传递方式参量的传递方式有多种形式,其相应地在子程序有多种形式,其相应地在子程序 中取入口参量的方法也有所不同。下面介绍中取入口参量的方法也有所不同。下面介绍三种三种参量的传参量的传 递方法:递方法: 18 1、用寄存器传递参量、用寄存器传递参量 设调用子程序时,入口参量为:被转换的数在
16、设调用子程序时,入口参量为:被转换的数在DX中,若数位中,若数位16, 则则从高到低从高到低地存放地存放,转换后的转换后的ASCII码的存放首址在码的存放首址在DI中。中。信息的保存由信息的保存由 主程序完成。主程序完成。 COSEG SEGMENT ASSUME CS:COSEG,DS:DATA,SS:STACK1 START: MOV AX,DATA MOV DS,AX XOR DX,DX LEA DI,ASCBUF;存放存放ASCII码的单元首址送码的单元首址送DI MOV DH,BIN1 ;待转换的第待转换的第1个数据送个数据送DH MOV AX,8 ;待转换的二进制数的位数待转换的二
17、进制数的位数 PUSH DI;保护信息保护信息 CALL BINASC ;调用转换子程序调用转换子程序 POP DI;恢复信息恢复信息 MOV DX,BIN2 ;待转换的第二个数据送待转换的第二个数据送DX MOV AX, 16 ADD DI,8 ;设置下一个数的存放首址设置下一个数的存放首址 CALL BINASC MOV AH,4CH INT 21H 主程序主程序 19 BINASC PROC MOV CX,AX LOP: ROLDX,1 ;最;最高高位移入最低位位移入最低位 MOV AL,DL AND AL,1 ;保留最低位,屏蔽其它位;保留最低位,屏蔽其它位 ADD AL,30H ;A
18、L中即为该数字符(中即为该数字符(0或或1)的)的ASCII码码 MOV DI,AL ;存结果;存结果 INC DI ;修改地址指针;修改地址指针 LOOP LOP RET BINASC ENDP COSEG ENDS END START 转换子程序转换子程序 20 2、用堆栈传递参量、用堆栈传递参量 (2)在子程序中保存信息。)在子程序中保存信息。 如果使用堆栈传递参量,一般应包括:如果使用堆栈传递参量,一般应包括: (1)在主程序中,将待转换的数据、存放)在主程序中,将待转换的数据、存放 ASCII码的首址和转换的位数压入堆栈;码的首址和转换的位数压入堆栈; 21 ;主程序;主程序 COS
19、EG SEGMENT ASSUME CS:COSEG,DS:DATA,SS:STACK1 BEGIN:MOV AX,DATA MOV DS,AX MOV AH,BIN1 PUSH AX;待转换数据压栈;待转换数据压栈 MOV AX,8 PUSH AX;转换位数压栈;转换位数压栈 LEA AX,ASCBUF PUSH AX;存放;存放ASCII码的首址压栈码的首址压栈 CALL BINASC ;调用转换子程序;调用转换子程序 MOV AX,BIN2 PUSH AX MOV AX,10H PUSH AX ADD DI,8 PUSH DI CALL BINASC MOV AH,4CH INT 21H
20、 ASCII码首址码首址 位数位数 待转换数据待转换数据 执行执行CALL指指 令前堆栈情况令前堆栈情况 SP+2 SP+4 SP 执行执行CALL指指 令后堆栈情况令后堆栈情况 SP+2 SP+4 SP 待转换数据待转换数据 位数位数 ASCII码首址码首址 返回地址返回地址 SP+6 22 ;转换子程序;转换子程序 BINASC PROC PUSH AX PUSH CX PUSH DX PUSH DI MOV BP,SP MOV DI,BP+10 ;从堆栈取入口参数从堆栈取入口参数 MOV CX,BP+12 MOV DX,BP+14; LOP: ROL DX,1 MOV AL,DL AND
21、 AL,1 ADD AL,30H MOV DI,AL INC DI LOOP LOP DI DX CX AX 返回地址返回地址 ASCII码首址码首址 位数位数 待转换数据待转换数据 子程序中子程序中保存信息保存信息并并 执行执行MOV BP,SP后后 SP SP+2 SP+4 SP+6 SP+8 BP 23 POP DI POP DX POP CX POP AX RET 6 ;返回返回并并从堆栈中弹出从堆栈中弹出6个字节个字节 BINASC ENDP COSEG END BEGIN DI DX CX AX 返回地址返回地址 ASCII码首址码首址 位数位数 待转换数据待转换数据 执行执行RE
22、T 6前前 SP DI DX CX AX 返回地址返回地址 ASCII码首址码首址 位数位数 待转换数据待转换数据 执行执行RET 6后后 SP 24 3、用地址表传递参量、用地址表传递参量 在调用子程序前,将所有参量的在调用子程序前,将所有参量的地址地址依次存放在一个依次存放在一个 地址表中,地址表中, 然后将该表的首地址传送给子程序。然后将该表的首地址传送给子程序。 数据段部分改为:数据段部分改为: DATA SEGMENT BIN1 DB 35H BIN2 DW 0AB48H CUNT DB 8,16 ASCBUP DB 20H DUP(?) ADR_TAB DW 3 DUP(0) ;存
23、放参量地址表存放参量地址表 DATA ENDS 传递参数也可以采用传递参量的地址来实现。传递参数也可以采用传递参量的地址来实现。 25 主程序主程序中有关指令序列修改为:中有关指令序列修改为: . MOV ADR_TAB,OFFSET BIN1 ;存参量地址存参量地址 MOV ADR_TAB+2,OFFSET CUNT MOV ADR_TAB+4,OFFSET ASCBUP MOV BX,OFFSET ADR_TAB ;传表首址传表首址 CALL BINASC8 MOV ADR_TAB,OFFSET BIN2 MOV ADR_TAB+2,OFFSET CUNT+1 MOV ADR_TAB+4,
24、OFFSET ASCBUP+8 MOV BX,OFFSET ADR_TAB ;传表首址传表首址 CALL BINASC16 . 26 BINASC PROC BINASC8: MOV DI,BX;取待转换;取待转换8位数据位数据 MOV DH,DI JMP TRAN BINASC16:MOV DI,BX ;取待转换取待转换16位数据位数据 MOV DX,DI TRAN: MOV DI,BX+2 ;取待转换数据位数取待转换数据位数 MOV CL,DI XOR CH,CH MOV DI,BX+4:取存取存ASCII码首址码首址 LOP: ROL DX,1 MOV AL,DL ;待转换的待转换的1位
25、送到位送到AL中转换中转换 AND AL,1 ADD AL,30H ;构成相应的构成相应的ASCII码码 MOV DI,AL ;存结果存结果 INC DI LOOP LOP RET 转换子程序设置转换子程序设置两个入口两个入口,一个是转换,一个是转换8位数据的入口位数据的入口BINASC8, 另一个是转换另一个是转换16位数据的入口位数据的入口BINASC16。 27 6.4 DOS 功能子程序调用功能子程序调用 DOS操作系统为程序设计人员提供了可以直接调用的功能操作系统为程序设计人员提供了可以直接调用的功能 子程序。调用这些子程序可以实现从键盘输入数据,将数据送子程序。调用这些子程序可以实
26、现从键盘输入数据,将数据送 显示器显示,以及磁盘操作等功能。显示器显示,以及磁盘操作等功能。 调用这些子程序时,需要使用软中断指令调用这些子程序时,需要使用软中断指令 INT 21H,并,并 且在执行该指令之前,需要将要调用的功能号送入寄存器且在执行该指令之前,需要将要调用的功能号送入寄存器AH 中,有关的参量送入指定的寄存器。中,有关的参量送入指定的寄存器。 调用过程包括以下调用过程包括以下三个三个步骤:步骤: * 送入口参量给指定寄存器送入口参量给指定寄存器 * AH=功能号功能号 * INT 21H 28 调用该功能子程序将等待键盘输入,直到按下调用该功能子程序将等待键盘输入,直到按下一
27、个一个键。将键。将 字符的字符的ASCII码码送入送入AL寄存器,并在屏幕上显示该字符。如果寄存器,并在屏幕上显示该字符。如果 是是Ctrl-C组合键,则停止程序运行。该功能调用无入口参量。组合键,则停止程序运行。该功能调用无入口参量。 1、带显示的键盘输入(、带显示的键盘输入(1号功能)号功能) 例如:例如:MOV AH,01H INT 21H 2、不带显示的键盘输入(、不带显示的键盘输入(8号功能)号功能) 该功能调用与该功能调用与1号功能的作用相似,区别是号功能的作用相似,区别是8号功能将不显号功能将不显 示输入的字符。调用方法为:示输入的字符。调用方法为: MOV AH,8 INT 2
28、1H 29 3、不带显示的键盘字符输入(、不带显示的键盘字符输入(7号功能)号功能) MOV AH,7 INT 21H 4、字符串输入(、字符串输入(0AH号功能)号功能) 该功能与该功能与8号功能相似,但对号功能相似,但对Ctrl-C组合键组合键和和TAB制表制表 键无反应。调用方法:键无反应。调用方法: 该功能调用可实现从键盘输入一个字符串,其长度可达该功能调用可实现从键盘输入一个字符串,其长度可达255 个字符。调用该功能前,应在内存中建立一个输入个字符。调用该功能前,应在内存中建立一个输入缓冲区缓冲区。 缓冲区缓冲区第一个字节第一个字节是可输入的最大字符数是可输入的最大字符数+1;第二
29、个字第二个字 节节是系统在调用该功能时,自动填入的本次调用时实际输入是系统在调用该功能时,自动填入的本次调用时实际输入 的字符个数;的字符个数;从第三个字节从第三个字节开始存放输入字符的开始存放输入字符的ASCII码。码。 30 当用户输入当用户输入回车回车键时,结束输入,并将回车键的键时,结束输入,并将回车键的ASCII 码(码(0DH)作为最后一个字符送入缓冲区。但它不计入实际)作为最后一个字符送入缓冲区。但它不计入实际 输入字符个数。输入字符个数。 调用调用入口参量入口参量: DS和和DX寄存器分别装入输入缓冲区的段基值和偏移量寄存器分别装入输入缓冲区的段基值和偏移量 CHAR_BUF
30、DB 31H ;缓冲区的最大长度缓冲区的最大长度 DB 0 ;存实际输入字符数存实际输入字符数 DB 31H DUP(0);输入缓冲区输入缓冲区 . MOV DX,SEG CHAR_BUF;如果如果DS已经指向已经指向CHAR_BUF所在所在 MOV DS,DX;数据段,则可以省去这两条指令数据段,则可以省去这两条指令 MOV DX,OFFSET CHAR_BUF MOV AH,0AH INT 21H 31 5、字符显示(、字符显示(2号功能)号功能) 该功能实现在屏幕上显示该功能实现在屏幕上显示单个单个字符。字符。 入口参数入口参数:DL=要显示字符的要显示字符的ASCII码。码。 例如:例
31、如:MOV DL A MOV AH,2 INT 21H 6、字符打印(、字符打印(5号功能)号功能) 该功能将字符送入打印机接口,实现该功能将字符送入打印机接口,实现单个单个字符的打印操作。字符的打印操作。 入口参数入口参数:DL= 打印字符的打印字符的ASCII码码 MOV DL,A MOV AH,5 INT 21H 32 7、字符串显示(、字符串显示(9号功能)号功能) 该功能实现将一个字符串显示到屏幕上。该功能实现将一个字符串显示到屏幕上。 入口参数入口参数: (1)将待显示的字符串存放在一个数据缓冲区,字符串以符)将待显示的字符串存放在一个数据缓冲区,字符串以符 号“号“$”作为结束标
32、志。作为结束标志。 (2)将字符串的首址的段基值和偏移量分别送入)将字符串的首址的段基值和偏移量分别送入DS和和DX中中 例如:例如:CHAR DB This is a test.,0AH,0DH,$ . MOV DX,OFFSET CHAR MOV AH,9 INT 21H 33 8、直接输入输出(、直接输入输出(6号功能)号功能) 例如:显示美元符号“例如:显示美元符号“$”的程序段为:的程序段为: MOV DL,24H ; $的的ASCII码为码为24H MOV AH,06 INT 21H 该功能可以实现键盘输入,也可以实现屏幕显示操作。该功能可以实现键盘输入,也可以实现屏幕显示操作。
33、两种操作通过两种操作通过DL的内容确定。的内容确定。 (1)()(DL)=000FEH,显示输出。,显示输出。DL中是所显示字符中是所显示字符 的的ASCII码。码。 34 (2)()(DL)=FFH ,从键盘输入字符,从键盘输入字符 该功能的字符输入不等待键盘输入,该功能的字符输入不等待键盘输入,而是而是从键盘缓冲从键盘缓冲 区中读取。读取的字符区中读取。读取的字符ASCII码送入码送入AL中,如果没有键中,如果没有键 按下,则标志位按下,则标志位ZF=1。 例如:例如: WAIT: MOV DL,0FFH MOV AH,6 INT 21H JZ WAIT 35 9、读出系统日期(、读出系统
34、日期(2AH号功能)号功能) 读出的日期信息放入指定的寄存器中:读出的日期信息放入指定的寄存器中: CX:年(:年(19802099) DH:月(:月(112) DL:日(:日(131) AL:星期(:星期(0星期日,星期日,1星期一星期一) YEAR DW ? MONTH DB ? DAY DB ? . MOV AH,2AH INT 21H MOV YEAR,CX MOV MONTH,DH MOV DAY,DL 例如:例如: 36 10、设置系统日期(、设置系统日期(2BH号功能)号功能) 该功能用来改变计算机该功能用来改变计算机CMOS中的系统日期。中的系统日期。入口参数入口参数: CX=
35、年号(年号(19802099) DH= 月号(月号(112) DL= 日(日(131) 返回参数在返回参数在AL中,成功设置,则返回中,成功设置,则返回(AL)=0,否则(,否则(AL)=0FFH MOV CX,2000 MOV DH,11 MOV DL,2 MOV AH,2BH INT 21H CMP AL,0 JNE ERROR ;转出错处理转出错处理 . 例如:例如: 37 11、读出系统时间(、读出系统时间(2CH号功能)号功能) 执行该功能将获得系统的当前时间。返回的时执行该功能将获得系统的当前时间。返回的时 间参数存放在指定的寄存器中:间参数存放在指定的寄存器中: CH:小时(:小时(023) CL:分(:分(059) DH:秒(:秒(059) DL:百分秒(:百分秒(099) 12、设置系统时间(、设置系统时间(2DH号功能)号功能) 调用该功能,将设定系统时间。其入口参数为:调用该功能,将设定系统时间。其入口参数为: CH:小时:小时 (023) CL:分:分(059) DH:秒:秒(0-59)DL:百分秒(:百分秒(0-99) 该功能执行后返回时,如果调用成功,则(该功能执行后返回时,如果调用成功,则(AL)=0。 否则(否则(AL)=0FFH
限制150内