- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
? 循环程序设计 ? 分支程序设计 第5章 循环与分支程序设计 分支结构 子程序结构 程序结构: 复合结构:多种程序结构的组合 … 顺序结构 循环结构 编制汇编语言程序的步骤: (1) 分析题意,确定算法 (2) 根据算法画出程序框图 (3) 根据框图编写程序 (4) 上机调试程序 1. 循环程序设计 WHILE-DO 结构 DO-UNTIL 结构 控制条件 初始化 循环体 Y N 控制条件 初始化 循环体 Y N 初始化:设置循环的初始状态 循环体:循环的工作部分及修改部分 控制条件:计数控制 特征值控制 地址边界控制 补充:字符与字符串的输入/输出方法 DOS系统调用INT 21H提供了字符及字符串的I/O功能,例如: 01H:从键盘读入一个字符 02H:显示一个字符 09H:显示一个字符串 0AH:从键盘读入一个字符串 字符与字符串的输入/输出方法 1. 从键盘读入一个字符 功能号:01H 出口参数:AL = 输入字符的ASCII码 功能:等待从键盘读入一个字符,将其ASCII码送入AL,同时将该字符显示在屏幕上。 调用方法: mov ah, 1 int 21h 说明:输入一个字符后,不需要回车。若只键入回车,则AL = 0DH。 ? 字符与字符串的输入/输出方法 2. 显示一个字符 功能号:02H 入口参数:DL = 要显示字符的ASCII码 功能:在当前光标位置显示DL中的字符,光标右移。 调用方法示例: mov dl, A ; 显示字符A mov ah, 2 int 21h 说明:显示字符0DH和0AH将产生回车和换行的作用。 ? 字符与字符串的输入/输出方法 ?3. 显示一个字符串 功能号:09H 入口参数:DS:DX = 欲显示字符串在内存的首地址,且字符串必须以$(24H)作为结束符。 功能:在当前光标位置,显示由DS:DX所指的、以$结尾的字符串,且光标右移。其中,$不算在显示的字符串之内。 调用方法示例: String db Hello!$ ; 显示字符串Hello! mov ax, seg String(所在的段地址,比如定义了data段,即为data) mov ds, ax mov dx, offset String mov ah, 9 int 21h ? 字符与字符串的输入/输出方法 ??4. 从键盘读入一个字符串 功能号:0AH 入口参数:DS:DX = 输入缓冲区首地址 输入缓冲区格式:第0字节事先设置为缓冲区最多能容纳的字符个数(包括回车);第1字节将存放实际字符个数(不包括回车),由系统自动设置;从第2字节开始存放实际输入的字符串,最后为回车符。 功能:从键盘读入一个字符串,存入DS:DX所指的缓冲区。 调用方法示例: buf db 10 dup (?) ; 定义输入缓冲区 mov ax, seg buf(比如定义data段,为data) mov ds, ax lea dx, buf mov ah, 0ah int 21h 字符与字符串的输入/输出方法 DOS系统调用只提供了字符与字符串的输入/输出方法。如果要输入/输出其它类型的数据,如常用的整数,则必须由应用程序来实现与字符之间的转换。例如,欲输出整数126,只能以字符(串)的方式输出1 、 2 、 6 。 对于程序员来说,在需要用户输入时给出输入提示,对输入数据进行有效性检查,在输出结果时说明其表示的含义,是一种好的设计习惯。 BX 1 2 3 4 例1:把 BX 中的二进制数以十六进制的形式显示在屏幕上 循环程序设计 …… mov ch, 4 rotate: mov cl, 4 rol bx, cl mov al, bl and al, 0fh add al, 30h ; ’0’~’9’ ASCII 30H~39H cmp al, 3ah jl printit add al
文档评论(0)