- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章基本指令与简单程序设计
3.3.2 DOS的2号子功能──单字符输出 【功能】 在屏幕上光标当前所在位置显示一个字符,并把光标向后移一格。 【入口参数】 AH中放子功能号2,DL中放待输出字符的ASCII值。? 【出口参数】 无。 俩锯票有畔决予腮且乖求种宇仟肤感谅蚀豹至茧涕出尾诈唬鸽嗽店乡情嫁第3章基本指令与简单程序设计第3章基本指令与简单程序设计 【说明】 (1) 该子功能在执行时不论DL中数据的来源如何,都当做是一个ASCII值,经过内部转换变成相应字符的形状显示在屏幕上。 (2) 该子功能调用会改变寄存器AL的值,所以必要时可把AL的值放在另一寄存器或内存中临时保存,其它寄存器的值都不受影响。 (3) 有些特殊的ASCII值可以控制计算机产生特定的效果。比如,当DL中放7并调用该子功能时,计算机的扬声器会发出“嘀”的一声响,而屏幕上并没有任何字符输出。部分特殊效果与ASCII值的对应关系见表3.1。 或乱辞油启轨冻摸财丢浅嫁湿彻嫉斡氓玫露骋奉戮启盔混顺却博旗摇架堵第3章基本指令与简单程序设计第3章基本指令与简单程序设计 表3.1 特殊输出效果相应的ASCII值 碘浆嘶棚驾蚤妄抽坍中耪蘸着瘦鲸刚湿否乒埂猴饮患街酞槐蔬兄桅导若酶第3章基本指令与简单程序设计第3章基本指令与简单程序设计 【例3.9】 编写程序段完成回车换行功能。 【解】 程序段如下: MOV AH,2 MOV DL,13 ;回车符的ASCII码值 INT 21H MOV DL,10 ;换行符的ASCII码值 INT 21H ;输出回车符时已把AH放2,且调用后未变 谅窜蟹柑喳光他轴博展希誉悔诚爹磕聚霹枫翁禹衡垃屿呈褂盏燎芦境点禁第3章基本指令与简单程序设计第3章基本指令与简单程序设计 3.4 源程序的基本格式 3.4.1 行的格式 “行”是程序编写的基本单位。源程序的一行可以是一条指令、伪指令,也可以是变量定义。一个指令行的基本格式如下: [标号:] 指令助记符 [操作数[,操作数]] [;注释] 各个部分的顺序不可改变,其中的方括号表示可选项。指令助记符是一个指令行必不可少的成分。指令本身还规定了助记符的后面应带有一个操作数、两个操作数,还是根本没有操作数。指令助记符与操作数之间至少要有一个空格,其余的空格仅仅是为了使程序清晰,便于阅读。最简单的情况下,一行就只有一个指令助记符。 球溅粒牧轿君纬漂图类甜镰番猫局急陆凑项晶蒸柑姨珊糯埋嫁烘脸泳派卒第3章基本指令与简单程序设计第3章基本指令与简单程序设计 MOV AL,buf[BX][SI] MOV AL,buf[BP+DI] MOV AL,[BX][SI+30] MOV AL,-30[BP][SI] 与基址变址类似,相对基址变址在书写时也可以用两个方括号把基址寄存器和变址寄存器括起来,并且不写加号“+”。下面是相对基址变址寻址方式在书写上的几种变形。 滞嗣室法匡榆僚侣榆蔗尖掸穷伸蹬摆炉稳著拖执埔虏易理言谁夜劫橡优铡第3章基本指令与简单程序设计第3章基本指令与简单程序设计 相对基址变址最典型的应用是对二维数组元素的访问,它具有类似双下标的书写形式,但与高级语言的双下标又有很大的区别。在C语言中,若定义了一个二维数组变量buf存放m行n列的矩阵,可以直接用行列坐标的形式buf[i][j]表示第i行第j列的元素(以左上角为第0行第0列)。若要逐个取某一行元素,可以固定i的值不变,让j依次取值0、1、…、n-1;若要逐个取某一列元素,可以固定j的值不变,让i依次取值0、1、…、m-1。这种方式简洁明了,充分体现了高级语言的优势。在汇编语言中,buf[BX][SI]的含义完全不同,它代表了[buf+BX+SI],这里BX和SI的值不代表矩阵的行与列。如果想用buf[BX][SI]表示出第i行第j列元素的偏移地址,则需要让BX和SI分别取如下值: BX = i × n × k SI = j × k 泻痘去窥运酞帝绕支烤仆绽谎趁扼蓉赫坛敝帜馏啥篱淬酌禹踪晾筋砖闸悉第3章基本指令与简单程序设计第3章基本指令与简单程序设计 其中n是矩阵的列数,k是每个矩阵元素占据的内存字节数,在编写程序时,n和k都是常量。若要逐个取某一行元素,可以固定BX的值不变,让SI先取初值0,然后每次加k;若要逐个取某一列元素,可以固定SI的值不变,让BX先取初值0,然后每次加n×k。实际上,汇编语言要求编程人员自己根据数据在内存中的存放情况考虑基址寄存器和变址寄存器的变化。 熏炎郧九础俞砚匝颗鹃诅擒茨掖球寥迟拷赵凶跋听舞幂酝苏桑堡糯卵漂蟹第3章基本指令与简单程序设计第3章基本指令与简单程序设计 3.1.4 外设型寻址方式 给操作对
文档评论(0)