![]() | 第3章 中断调用与子程序 | -31- | |||||||||||||||||||
数据放入AL中,所以如果在调用此功能前AL中存在有用的数据,那么就需要事先保存AL寄存器的内容。请看下面的程序PROG-3。 | |||||||||||||||||||||
PROG-3 | |||||||||||||||||||||
-a100[Enter] | |||||||||||||||||||||
09FE:0100 jmp 112 09FE:0102 [Enter] -e102[Enter] |
;跳过字符串数据区 ;在此处直接打回车 ;用E命令将字符串的ASCII码置入内存 |
||||||||||||||||||||
09FE:0102 FC.50 80.72 74.65 63.73 BA.73 A6.20 09FE:0108 82.61 04.6e 08.79 83.20 74.6b 5B.65 BA.79 B2.2e 09FE:0110 08.2e 84.2e 74.[Enter] | |||||||||||||||||||||
-a112[Enter] | |||||||||||||||||||||
09FE:0112 mov bx,102 09FE:0115 mov cx,10 09FE:0118 mov dl,[bx] 09FE:011A mov ah,02 09FE:011C int 21 09FE:011E inc bx 09FE:011F loop 118 09FE:0121 mov ah,01 09FE:0123 int 21 09FE:0125 mov bl,al 09FE:0127 mov dl,0d 09FE:0129 mov ah,02 09FE:012B int 21 09FE:012D mov dl,0a 09FE:012F int 21 09FE:0131 mov dl,bl 09FE:0133 int 21 09FE:0135 int 20 09FE:0137 [Enter] |
;BX寄存器中置入字符串数据区首址 ;需要处理的字符个数置入CX寄存器 ;取得一个字符的ASCII码到DL寄存器 ;选择DOS API的02H功能 ;调用21H中断显示DL中的字符 ;BX寄存器加1指向下一个字符 ;返回0118H处继续处理BX所指向的新字符 ;选择DOS API的01H功能 ;调用21H中断等待键盘输入 ;保存键盘输入字符的ASCII码 ;DL寄存器置入回车符的ASCII码0DH ;选择DOS API的02H功能 ;调用21H中断显示回车符 ;DL寄存器置入换行符的ASCII码0AH ;调用21H中断显示换行符 ;DL寄存器置入刚刚输入的字符 ;调用21H中断显示刚刚输入的字符 ;调用20H中断结束程序,返回DOS |
||||||||||||||||||||
程序例PROG-3给出了这两个功能调用的应用实例。注意每行指令的后面都有一个带“;”的说明性文字,这些文字的作用是使程序比较易懂,大家在上机输入程序时不能输入这些文字。 程序中出现了一条新的指令──INC: |
|||||||||||||||||||||
![]() |
助记符:INC(Increase) 用 途:将寄存器或存储器中的数据加1 格 式:INC 寄存器 INC 存储单元 执 行:相应寄存器或存储器中的数据加了1 |
||||||||||||||||||||
此指令的功能和前面所讨论的DEC正相反,需要对照记忆。 | |||||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |