屏幕处理和键盘输入基本特性.ppt

上传人:sccc 文档编号:5394518 上传时间:2023-07-03 格式:PPT 页数:79 大小:342.02KB
返回 下载 相关 举报
屏幕处理和键盘输入基本特性.ppt_第1页
第1页 / 共79页
屏幕处理和键盘输入基本特性.ppt_第2页
第2页 / 共79页
屏幕处理和键盘输入基本特性.ppt_第3页
第3页 / 共79页
屏幕处理和键盘输入基本特性.ppt_第4页
第4页 / 共79页
屏幕处理和键盘输入基本特性.ppt_第5页
第5页 / 共79页
点击查看更多>>
资源描述

《屏幕处理和键盘输入基本特性.ppt》由会员分享,可在线阅读,更多相关《屏幕处理和键盘输入基本特性.ppt(79页珍藏版)》请在三一办公上搜索。

1、第8章 屏幕处理和键盘输入基本特性,8.1 中断指令INT 8.2 基本屏幕处理 8.3 键盘输入 8.4 屏幕显示和键盘操作(扩充DOS),8.1 中断指令INT,中断指令INT的功能是中断程序的执行,转移到DOS或BIOS处理某一项指定工作后,再回到程序继续执行。中断常用来执行输入或输出操作。为了可靠地返回中断处的程序,所有的中断必须留下踪迹。为了实现这些要求,中断指令INT执行下列的步骤:,中断指令INT的功能是中断程序的执行,转移到DOS或BIOS处理某一项指定工作后,再回到程序继续执行。中断常用来执行输入或输出操作。为了可靠地返回中断处的程序,所有的中断必须留下踪迹。为了实现这些要求

2、,中断指令INT执行下列的步骤:,(1)将堆栈指针SP减2,再将标志寄存器PSW内容压入堆栈中。(2)TF和IF标志位清0。(3)将堆栈指针SP减2,再将CS寄存器内容压入堆栈中。(4)将堆栈指针SP减2,再将指令指针寄存器IP的内容压入堆栈中。(5)执行中断所要求的操作。(6)从中断中弹出各个寄存器的内容,再返回到INT指令的下一条指令继续执行。,这些过程是自动完成的,程序员所要做的仅是定义一个足够大的堆栈段,以确保压入和弹出的操作能顺利完成。本章介绍两种形式的中断:BIOS的INT 10H,它负责屏幕处理;DOS的INT 21H负责输出显示和接受输入。INT 21H通常被称为某项操作的DO

3、S系统功能调用。依照不同的需求目的,分别使用INT 10H 或INT 21H 完成不同的操作。,8.2 基本屏幕处理,本节介绍较早期DOS对屏幕的处理方法。它们是设定光标的位置、清除屏幕和显示字符。8.2.1 设定光标位置 屏幕是由一格一格的小方格所组成的,光标可以设定在任意的小方格上。例如,典型的监视器有25行(024)、80列(079)。表8-1是光标位置的例子。,表8-1 光 标 位 置,INT 10H的特色是可以把光标定在屏幕的任何位置以及清除屏幕。下面的例子是把光标放在第5行、12列的位置上。MOV AH,02;功能号定址要求 MOV BH,00;第0页 MOV DH,05;第5行

4、MOV DL,12;第12列 INT 10H;中断转移至BIOS,AH的值02通知BIOS要设定光标,行和列的值必须放到DX寄存器中,页数通常是0,放在BH中。其他寄存器的内容不需要。也可以用MOV指令和十六进制的立即数来设定光标位置。例如:MOV DX,050CH;第5行、第12列,8.2.2 清除屏幕 系统的提示命令通常都会留在屏幕上,直到新的信息显示或屏幕向上卷动,提示命令才会消失。当程序开始时,若想要清除屏幕,也可以从屏幕的任何位置开始清除到行和列编号较高的位置。方法是把终止行、列的值送入DX中,07送入BH中,设定AX为0600H。下面是一个清除整个屏幕的例子:,MOV AX,060

5、0H;AH=06(屏幕上卷),AL=00(整个屏幕)MOV BH,07;正常属性(黑白)MOV CX,0000;起始位置0行、0列 MOV DX,184FH;终止位置(24/79)INT 10H,上述操作是把屏幕上卷成空白。假如,屏幕右下角坐标所设定的值大于184FH,会使屏幕的卷动超过一帧画面,造成某些地方被清除两次,虽然这种疏忽在单色屏幕上不会造成什么伤害,但是在彩色监视器上,可能会造成严重的错误。,8.2.3 显示字符 通常程序会显示一些信息,以提示程序已经完成或发生错误,或者提示使用者输入信息,或说明下一步的操作。较早期的DOS将要显示在屏幕上的信息定义在数据段中;设定AH为09(DO

6、S功能调用号),并且使用DOS功能调用INT 21H。要显示的内容以符号“$”作为结束标志,如下所示:,NAMPRMP DB Customer name?,$MOV AH,09 LEA DX,NAMPRMP INT 21H 符号“$”也可以直接写在提示语句内,如Customer name?$,或写在下一行。但不能用上述的操作将字符“$”显示在屏幕上。如果在提示信息后省略了符号“$”,上述指令会继续显示字符,直到遇到一个“$”字符为止。,LEA指令将NAMPRMP的地址装入DX 寄存器中,使得DOS能够找到所要显示的信息。LEA只是装入NAMPRMP在数据段的偏移地址,DOS利用DS寄存器的值乘

7、以10H加上DX(DS:DX)的值,确定出存储器的物理地址即实际地址。,8.2.4 显示ASCII码字符集 例8.1 显示00HFFH的ASCII字符集。256个ASCII码字符,大部分都能以一个符号显示在屏幕上,因为00H和FFH没有符号表示,所以显示空白,但是在ASCII码中,真正的空白是20H。程序清单如下:;filename:L81.ASM;数据段,DATA SEGMENT CTR DB 00H,$DATA ENDS;堆栈段STACK_ SEGMENT PARA STACK STACK DW 100 DUP(?)STACK_ ENDS;代码段CODE SEGMENT PARA CODE

8、,;主程序MAIN PROC FAR ASSUME CS:CODE,DS:DATA,SS:STACK_START:PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX CALL BIOCLR CALL CIOSET,CALL DIODISP RET MAIN ENDP;清除屏幕BIOCLR PROC MOV AX,0600H MOV BH,07 MOV CX,0000 MOV DX,184FH INT 10H RET,BIOCLR ENDP;设置光标0行、0列CIOSET PROC MOV AH,02 MOV BH,00 MOV DX,0C28H IN

9、T 10H RETCIOSET ENDP,;显示ASCII码字符集DIODISP PROC MOV CX,256 LEA DX,CTRD20:CMP CTR,08H JB D30 CMP CTR,0DH JBE D40D30:MOV AH,09 INT 21H,D40:INC CTR LOOP D20 RETDIODISP ENDP;CODE ENDS END START,说明:例8.1会出现如下问题,符号“$”并不显示在屏幕上;介于08H到0DH之间的字符是一些特殊的格式控制符,用来作为退位和其他的一些控制,它们将会使光标移动。建议:键入例8.1中的程序,然后编译、链接,生成一个可执行的文件

10、,如ASCII.EXE,然后执行该文件。,结果:屏幕上显示的第一行,由一个空白开始(00H),然后是两个“笑脸”(01H、02H),再接着是红心,方块和梅花(03H、04H和05H),07H会使喇叭响一声,06H会显示黑桃,但是会被08H到0DH的控制字符所清除,0DH会使光标跳到下一行的开头,0EH是音乐符号,7FH以上的字符都是图形符号。可以修改例8.1的程序,以便跳过这些控制字符。下面的一段指令可以跳过介于08H 到0DH的所有字符。,CMP CTR,08H;低于08H?JB D30;不高于/等于,则跳到显示 CMP CTR,0DH;不高于0DH?JBE D40;不高于,则跳过显示D30

11、:MOV AH,09;显示低于08H高于0DH的ASCII码字符 INT 21HD40:INC CTR,8.3 键 盘 输 入,实现从键盘接受输入的程序和显示输出的做法相似。对于早期DOS的输入方法,需设置输入区以指明输入信息的参数,使得中断指令INT能够处理。首先,用于输入的中断必须知道输入信息的最大长度,其目的是在使用者输入太长的信息时发出警告,并且不再接受输入字符。其次,输入操作会计算出真正的输入字符的长度,共占用多少个字节,并将其值放入输入参数表中。,8.3.1 键盘输入字符 下面的例子是首先为输入定义一个参数表。LABEL是一条伪指令,类型为字节类型(BYTE),指示参数表的开始。参

12、数表的第1个字节是限制输入字符的最大长度,因为只占一个字节,所以输入的最大长度为FFH或255。第2个字节是留给DOS存储真正的输入字符长度的。从第3个字节开始,是存放输入字符的地方。,NAMEPAR LABEL BYTE;参数表的开始MAXLEN DB 20;输入字符的最大长度ACTLEN DB?;真实的输入字符长度NAMEFLD DB 20 DUP();键盘输入字符的存储处,此参数表的LABEL是一条伪指令,不占存储空间。利用AH为10(0AH)的DOS功能调用(INT 21H),可以实现接受键盘输入字符。方法是把参数表(本例中为NAMEPAR)的地址送入DX寄存器中,然后发出INT 21

13、H 调用。MOV AH,0AH;请求输入功能号为0AH LEA DX,NAMEPAR;参数表首地址填入DX INT 21H;DOS中断,INT 21H指令会等待使用者输入字符,并且检查输入字符个数是否超过参数表中的最大长度(本例中是20)。当使用者按下回车键(0DH)即表示结束输入,结束符(0DH)也会跟着进入到输入字符栏(本例为NAMEFLD)。假如,输入一个叫BROWN(回车Enter)的名字,则输入参数表的内容将成为:,此中断操作同时也传送回输入名字的长度05,存入参数表的第2个字节,在本例中为ACTLEN。回车键字符存放在NAMEFLD+5的位置。因为0DH是不能输出符号的,在此以En

14、ter表示,虽然最大的输入长度为20,但必须包含0DH,所以真正输入的名字只能有19个字符。,8.3.2 键盘输入并显示名字 例8.2 要求用户输入名字,并将它显示在屏幕中央,同时发出嘟的一声响声。通过例8.2对8.3.1节中的内容进行使用。程序清单如下:;filename:L82.ASM;STACK_SEGMENTPARASTACKSTACKDW32DUP(?)STACK_ENDS,;DATA SEGMENTPARADATANAMEPAR LABEL BYTE;参数表开始MAXNLEN DB 20;输入名字的最大长度NAMELEN DB?;真正输入名字的长度NAMEFLD DB 20DUP(

15、),$;输入名字的存放处PROMPT DB NAME?,$;提示句,DATA ENDS;CODESGSEGMENTPARACODEMAIN PROC FAR ASSUMECS:CODESG,DS:DATA,SS:STACK_,ES:DATABEGIN:PUSHDS SUBAX,AX PUSHAX,MOVAX,DATA MOVDS,AX MOVES,AX CALLQ10CLR;清屏 A20LOOP:MOVDX,0000;设定光标0行0列 CALLQ20CURS;屏幕设置 CALLB10PRMP;显示提示语句 MOVCX,20 MOVSI,0000,B30:MOVNAMEFLDSI,20H;字符存

16、放单元装入20H(空白)INCSI LOOPB30 CALLD10INPUT;输入名字 CALLQ10CLR;清屏 CMPNAMELEN,00 JEA30;输入字符长度为0,结束 CALLE10CODE;插入铃声与字符$CALLF10CENT;显示输入的名字,JMPA20LOOPA30:RETMAINENDP;显示提示B10PRMPPROCNEAR MOVAH,09LEADX,PROMPTINT21HRET,B10PRMPENDP;接受输入名字D10INPUTPROCNEARMOVAH,0AH;接受输入LEADX,NAMEPARINT21HRETD10INPUTENDP,;插入铃声与$字符E1

17、0CODEPROCNEAR MOVBH,00 MOVBL,NAMELEN;BX中存放输入字符的长度MOVNAMEFLDBX,07;回车符(0DH)由07替换 MOVNAMEFLDBX+1,$;07后放字符$RETE10CODEENDP,;显示输入的名字F10CENTPROCNEAR MOV DL,NAMELEN;输入字符的长度送入 DLSHRDL,1;右移1位(除以2)NEG DL;正号变更为负号 ADD DL,40;光标列定位值MOV DH,12;光标行定位值 CALL Q20CURS;设置光标位置,MOVAH,09LEADX,NAMEFLD;显示名字 INT21HRETF10CENTEND

18、P;清屏 Q10CLRPROCNEAR MOVAX,0600H MOVBH,07,MOVCX,0000 MOVDX,184FH INT10HRETQ10CLRENDP;设置页号与光标位置Q20CURSPROCNEAR,MOVAH,02MOVBH,00INT10HRETQ20CURSENDPCODESGENDS ENDBEGIN,程序说明如下:1)屏幕中央 重复执行上述步骤,用户通过键盘输入名字,直到输入一个回车(Enter)为止。假设输入的名字是AI HUALIN。(1)将长度09除以2等于4。(2)从40减此值等于36。,在子程序F10CENT中,SHR指令将长度09向右移1位,形成除以2的

19、效果,使00001001变成00000100。NEG指令变更正负号,把+4变成-4。ADD加上40得到列的位置36,并将它存入DL寄存器中。光标被设定在第12行、36列的位置,此时显示在屏幕上的名字如下:(12行)AI HUALIN(列)36 40,2)响声 子程序E10CODE中的一条指令,是在输入名字栏插入喇叭鸣叫的字符(07),字符07紧跟在输入的名字之后:MOV NAMEFLDBX,07 该条指令前的两条指令用于设定BX寄存器装入输入字符的长度。本条MOV指令的作用是把BX中的长度值与NAMEFLD的偏移地址相结合,并把07送到这个结合后的偏移地址单元中,如一个长度为5个字符的输入,这

20、条指令将把07送入NAMEFLD+05偏移地址的单元中(取代回车符0DH)。在子程序E10CODE中的最后一条指令,紧跟着07加入一个“$”,使得子程序E10CENT在显示名字的同时发出嘟的一声。,3)只输入Enter(回车符)假如,用户所键入的名字超过参数表中给出的最大长度(本例大于19)时,系统会发出报警的喇叭声,并且只能接受Enter(回车符)。但是,如果只输入一个Enter键,系统会接受,并且在参数表中的输入长度栏中放入一个0,如下所示:参数表NAMEPAR(十六进制):,在要求输入名字的提示下,用户可以简单地只按下Enter键,来表示输入内容的结束,即当输入名字的长度为0时,本程序确

21、定输入内容已结束。4)替换或清除Enter(回车符)为了实现不同的用途,可以用空格符(20H)取代 NAMEFLD中某些处的回车符(0DH)。NAMELEN这个栏包含了输入的真正长度,并且可以用来提供任何字符的相对偏移地址。例如,假设NAMELEN的值为5,则0DH的偏移地址是NAMEFLD+5。可以把这个长度装入BX寄存器中,并且利用BX当作NAMEFLD的索引地址。如:,MOV BH,00 MOV BL,NAMELEN;BX为0005 MOV NAMEFLDBX,20H;清除回车键替换为空格 第3条MOV指令传送一个空格(20H)给NAMEFLD+5单元。,5)清除输入区域 输入区域的内容

22、将被输入的字符所取代,而其他区域仍保留原来的字符,直到另有其他输入字符取代它们为止。假设下面的例子是连续输入的:(1)BROWN 14 05 42 52 4F 57 4E 0D 20 20-20(2)HAMILTON 14 08 48 41 4D 49 4C 54 4F 4E 0D 20(3)ADAMS 14 05 41 44 41 4D 53 0D 4F 4E 0D 20,HAMILTON 取代了比较短的名字BROWN。但是,因为ADAMS名字比HAMILTON名字短,所以它只能取代至HAMIL,并且T字符被回车符(0DH)所取代。残留的字符ON,仍紧跟在ADAMS之后。良好的编程习惯是,在

23、送出要求输入的提示语句之前,先把NAMEFLD清为空格。如:MOV CX,20;重复20次 MOV SI,0000,B30:MOV NAMEFLDSI,20H;给名字处存入空格字符 INC SI;加1 LOOP B30;循环20次,若不用SI寄存器,也可以使用DI或BX寄存器。更有效的方法是一次传送一个字的空格字符,只需循环10次。但是,因为NAMEFLD被定义为DB(BYTE)的类型,所以必须用WORD和PTR(Pointer)运算符来更改它的类型。如:MOV CX,10;重复10次 LEA SI,NAMEFLD;设SI为起始地址,B30:MOV WORD PTRSI,2020H;给名字处写

24、入2个空格 INC SI INC SI;加2 LOOP B30;循环10次,传送空格的字到SI间接寻址的单元,本例中用LEA指令来设定起始地址值,并对于B30:的MOV指令使用了另外一些处理方法,这是由于不能将此指令写成如下的格式:MOV WORD PTRNAMEFLD,2020H;不合理的指令格式 这样,借清除输入区域的方法,可解决输入名字是否比上一次输入短的困扰。,8.4 屏幕显示和键盘操作(扩充DOS),本节将要讨论DOS 2.0以上版本的屏幕显示和键盘操作方法。DOS以文件管理的方式管理设备,在要求I/O设备动作时,只需要把I/O设备的代号送入BX寄存器中即可。下列是标准设备号:,0

25、输入设备,键盘为标准输入 1 输出设备,显示器为标准输出 2 错误输出设备,总是显示器 3 辅助设备,一般为通讯设备 4 标准打印机,DOS中断是INT 21H,要求功能调用的功能号码被放至AH中;3FH的功能是输入,40H的功能是输出。设定CX的值为所要输入或显示的字节个数(长度),并且把输入或输出区域的偏移地址送入DX中。当处理的动作成功时,会把进位标志CF清为0,并且将真正输入或显示的字符个数放在AX中。当处理动作不成功时,进位标志CF将被设置为1,并且会把错误代码(本例为6)放入AX。因为AX的内容可能为长度值,也可能为错误代码,所以能判断错误情况的唯一方法是去测试进位标志CF,虽然键

26、盘和屏幕上出现错误的情况是罕见的。,8.4.1 在屏幕上显示 下列指令说明如何使用DOS扩充的功能,要求显示在屏幕上。DISAREA DB 20 DUP();显示区域 MOV AH,40H;要求显示MOV BX,01;输出的设备管理MOV CX,20;最大20个字节LEA DX,DISAREA;显示区域INT 21H;调用DOS,LEA把DISAREA的偏移地址装入DX中,使得DOS能找到所要显示的内容。操作成功时会把进位标志清为0,并且设定AX的值为所显示字节的个数。不成功的操作也可能发生,其原因在于进行了不正当的管理。此操作将CF标志设为1,并把错误代码(本例为6)放入AX之中。因为AX可

27、以为显示字符的长度值,也可以为错误代码,所以唯一能判断错误情况的方法是测试CF标志。,练习在屏幕上显示 让我们利用DEBUG去检查中断的内部效果。装入DEBUG,当它的提示符“-”出现时,键入A 100,以便在指令代码段偏移地址100处开始输入汇编语言指令。要注意的是,DEBUG假设所有被输入的数都是十六进制。100 MOV AH,40 102 MOV BX,01,105 MOV CX,09(输出的长度)108 MOV DX,10E 10B INT 21 10D RET 10E DB YOUR NAME 上面的程序段设定AH的值为40H,是要求显示功能号,并且设定DX为10EH,这个位置是要显

28、示字符串“YOUR NAME”的地址,在整个程序的最后面,类型被定义成字节。,当键入完上述的指令,再按一次回车键,就会退出A命令。利用U命令(U 100,10D)反汇编此程序,再反复地利用R和T命令去追踪执行。当执行到INT 21H指令时,也就是到达10BH位置时,它的执行会跳往BIOS;利用G命令(G 10D)直接执行到下一条指令。执行完G命令后,YOUR NAME 将被显示在屏幕上,最后利用Q命令,退出DEBUG而将控制权交还给DOS。,8.4.2 从键盘接受输入 下面的例子说明,如何利用DOS扩充功能所提供的方法,实现从键盘接受输入。INAREA DB 20 DUP();输入区域MOV

29、AH,3FH;要求输入功能号MOV BX,00;对键盘的设备管理MOV CX,20;最大20个字节LEA DX,INAREA;输入区域INT 21H;调用DOS,LEA指令将INAREA的偏移地址送入DX。INT 21H中断会使系统停下来等待使用者输入字符,但是并不检查输入字节是否已经超过CX寄存器内容的值(本例为20),键入回车键(0DH)即表示输入的结束。例如,输入的字符串为“PC Vsers Group”,使得INAREA 的内容如下所示:PC Vsers Group,0D,0A 输入的字符串后紧跟着你所输入的Enter(0DH)和不用你输入的换行Line Feed(0AH)。因为这种特

30、色,输入区域的最大数目和长度将另外附加2个字节。假如你所输入的个数比最大长度短时,在存储器中输入字符的存储位置将和上面的例子相同。,当处理动作成功时,将把CF标志清为0(通过测试可得知),并且把输入字节的个数放入AX中。在先前的例子中,长度为14,加上Enter和Line Feed两个字节,也可以说长度为16。如前所述,程序可以确定字符的真正长度。因为对设备管理的错误,也有可能出现不成功的处理情形。当这种情况发生时,会将CF标志设为1,并把错误代码(本例为6)放入AX中。因为AX可为输入字符的长度,也可以为错误代码,所以唯一能确定是否发生错误情况的方法是测试CF标志的值。,假如,所输入的名字超

31、过CX寄存器的值时,这个处理动作将会接受所有字符。假设CX的内容为08,而使用者输入的字符串为“PC EXCHANGE”,上述的动作会将前面8个字符“PC EXCHA”放入输入区域,在字符“A”后并没有附加Enter和Line Feed两个字符,并且AX的值为08。当遇到下一个INT中断时,它所接受的名字并不是由键盘输入的,而是缓冲器(BUFFER)内的字符串,这是因为此时缓冲器(BUFFER)内仍残留着上一次输入的字符串。输入区域的内容将变成“NGE”加上Enter和Line Feed,AX被设置为5。上述的两个动作都是正常的,并且将CF标志清为0。,第一次 INT 21H:PC EXCHA

32、 AX=08 第二次 INT 21H:NGE 0D 0A AX=05 当一个程序告知使用者,他所输入的字符个数是正确的,它必须符合下列两个条件:AX的值小于CX的值;AX的值等于CX的值,并且输入区域最后的两个字符为0D和0A。早期的DOS对于键盘输入调用功能0AH,因为具有内在的检查能力,所以能提供一个功能更强的操作方法,至少在输入文字方面,它是一个较佳的选择。,练习输入资料 在此提供一个练习,使你能在DEBUG之下观察输入资料所造成的影响。这个程序允许你输入12个字符,包括Enter和Line Feed。装入DEBUG,当提示符“-”出现时,键入A 100,表示在指令代码段位置100处开始

33、输入汇编语言指令。DEBUG状态下的数字,都被认为是十六进制。,100 MOV AH,3F 102 MOV BX,00 105 MOV CX,0C 108 MOV DX,10F 10B INT 21 10D JMP 100 10F DB,上述程序段设定AH和BX的值,要求作键盘输入操作,CX的值是输入的最大长度,DX被设定为10FH程序最后一条指令DB的位置;输入的字符将被存储在10FH开始的地址位置处。,当你用A命令键入完上述指令,再按一次Enter键,就会退出A命令。用U命令(U100,10D)去反汇编这段程序。利用R命令、重复使用T命令,去追踪前面四条MOV指令所执行的结果。当执行位置到

34、达10BH时,利用G 10DH跳过中断指令(不必追踪BIOS的执行过程)。DEBUG会等待着,让你输入字符,并以Enter告知输入结束。检查AX寄存器的内容和进位标志变化的情况,并利用D 10F显示输入字符存放在存储器中的情况。你可以多次地重复这些动作。最后利用Q命令退出DEBUG。,8.4.3 利用Enter、Line Feed和TAB在屏幕上显示 利用Enter、Line Feed和TAB字符,可让显示在屏幕上的字符串更有可读性,它们分别为回车、换行和跳格。你可使用ASCII格式、十进制或十六进制来表示这些字符,例如:ASCII格式 十进制 十六进制 CR(Enter)13 0D LF(L

35、ine Feed)10 0A TAB 09 09,在低版本DOS或扩充版本DOS之下,当需要显示在屏幕上或接受输入时,都可以利用这些字符,使得光标自动地跳到下一行的起始位置。例如:MOV AH,40H;要求显示功能 MOV BX,01;屏幕处理 MOV CX,31;最大输出长度 LEA DX,MESSAG1;显示的资料位置 INT 21H;调用DOS,为增强上述程序的可读性,可以利用EQU伪指令来定义处理字符,进行修饰。例如:CR EQU 13 或 EQU 0DHLF EQU 10 或 EQU 0AHTAB EQU 09 或 EQU 09HMESSAGE DB TAB,PC Users Gro

36、up Annual Report,CR,LF,例8.3 在屏幕上显示字符“PC Users Group Annual Report”。程序清单如下:;filename:L83.ASM;DATA SEGMENTMESSAGE DB TAB,PC Users Group Annual Report,CR,LFDATA ENDS;STACK_ SEGMENT PARA STACK STACK,DB 100 DUP(?)STACK_ ENDS;CODE SEGMENT CR EQU 13 LF EQU 10 TAB EQU 09 ASSUME CS:CODE,DS:DATA,SS:STACK_,BEG:MOV AX,STACK_ MOV SS,AX MOV SP,100 MOV AX,DATA MOV DS,AX MOV AH,40H MOV BX,01 MOV CX,31,LEA DX,MESSAGE INT 21H MOV AH,4CH INT 21HCODE ENDS END BEG,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号