- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章汇编语歌言程序设计
6.3.2 DOS系统功能调用INT 21H 一个字符的输出 一个字符串的输出 一个字符的输入 一个字符串的输入 1. 一个字符的输出 子功能号:AH=02H。 入口参数:DL=输出字符的ASCII码。 执行该功能后会在显示器当前光标处显示指定的字符,且光标右移一个字符位置。 【例6.29】用02H号DOS系统功能调用在显示器输出一个字符。 MOV AH, 02H ;设置子功能号,AH=02H MOV DL, ’K’ ;设置入口参数,DL=’K’ INT 21H ;DOS功能调用,显示该字符 2. 一个字符串的输出 子功能号:AH=09H。 入口参数:DS:DX=待显示字符串在内存中的首地址。字符串应以$(24H)结束,可以输出回车和换行字符产生回车和换行的作用。 【例6.30】用09H号DOS系统功能调用在显示器输出一个字符串。 STRING DB ‘Hello,World!’, 0DH, 0AH, ’$’ ;定义要显示的字符串 …… MOV AH, 09H ;设置子功能号,AH=09H MOV DX, OFFSET STRING ;设置入口参数,DX=字符串偏移地址 INT 21H ;DOS功能调用,显示字符串 3. 一个字符的输入 子功能号:AH=01H。 出口参数:AL=输入字符的ASCII码。调用此子功能时,若无键按下,则会一直等待,直到有键按下时读取该键值。输入字符时有回显功能。 【例6.31】判断按键是Y还是N。 MOV AH, 01H ;设置子功能号,AH=01H INT 21H ;有按键时AL=按键的ASCII码 CMP AL, ’Y’ JZ KEYYES ;是Y转移到KEYYES执行 CMP AL, ’N’ JZ KEYNO ;是N转移到KEYNO执行 4. 一个字符串的输入 子功能号:AH=0AH。 入口参数:DS:DX=缓冲区首地址。缓冲区第一字节为缓冲区大小,事先填入,最大为255。 出口参数:输入字符串存储在DS:DX指示的缓冲区。第二字节为实际输入字符数(在输入字符串后自动写入),从第三字节开始存放输入的字符串。实际输入字符多于预设数时,多出的字符被丢弃。用户按回车键结束输入。 【例6.32】用0AH号DOS系统功能调用从键盘输入一个字符串 SBUF DB 21 ;定义缓冲区,第1字节为输入的最大字符数 DB 0 ;用于存放实际输入的字符数 DB 21 DUP(0) ;用于存放输入的字符串 …… MOV AX, SEG SBUF ;取得SBUF的段地址 MOV DS, AX ;设置数据段DS MOV DX, OFFSET SBUF ;设置缓冲区偏移地址 MOV AH, 0AH ;设置子功能号 INT 21H ;系统功能调用 ROM-BIOS功能调用 一个字符的输出 一个字符的输入 判断是否有按键 作业 P123 6.3、6.5 * 堆栈段可以不显式定义,程序本身有个默认的堆栈段。 (4)数值返回运算符(分析运算符) 数值返回运算符后只跟一个操作对象,这个操作对象只能是变量或标号。返回结果以数值的形式表示。 【例6.14】已知DS=1000H,定义了两个变量VAR1、VAR2。写出下列指令的运行结果。 MOV DI, OFFSET VAR1 ;取偏移地址,DI=0100H MOV AX, SEG VAR1 ;取段地址,AX=1000H MOV BL, TYPE VAR2 ;VAR2的类型属性为字,BL=2 ① SEG:取段址。 例:MOV AX , SEG OPER ② OFFSET:取偏移地址。 例:MOV BX, OFFSET OPER = LEA BX , OPER ③ TYPE:取类型值。 例: 若AB是DB定义的变量,执行 MOV AX ,TYPE AB ; AX = 0001H ④ LENGTH:取数据个数。 仅对DUP定义有效,否则为1。 ⑤ SIZE:取字节数。 SIZE = (LENGTH) *(TYPE) (4)数值返回运算符(分析运算符) 例: BUF1 DB 100 DUP(0) ;LENGTH BUF1 = 100, SIZE BUF1 = 100 BUF2 DW 200 DUP(0) ;LENGTH BUF2 = 200, SIZE BUF2
原创力文档


文档评论(0)