3_1 汇编语言基础 2011 final

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章汇编语言基础3.1源程序结构3.2数据表示3.3变量应用源程序目标程序ReadablebyhumansReadablebyprocessorsMOVAL,1ADDAL,2MOVBL,AL101100000000000100000100000000103.1源程序结构3.1.1语句格式3.1.2程序格式3.1.3开发方法第3章汇编语言基础3.1.1语句格式程序由语句组成一个语句常占一行(MASM有续行符“\”)一个语句不超过132个字符,4个部分执行性语句:表达处理器指令(硬指令)说明性语句:控制汇编方式(伪指令)标号:硬指令助记符目的操作数,源操作数;注释NEXT:MOVAL,23H;立即数23H送AL累加器名字伪指令助记符参数,参数,参数;注释tabledb18h,95h,0bh;定义表数据标号和名字是用户自定义的标识符3.1.1语句格式执行性语句:说明性语句:3.1.1语句格式—标识符最多由31个字母、数字及规定的特殊符号(_、$、?、@)组成,不能以数字开头一个源程序中,用户定义的每个标识符必须唯一不能是汇编程序采用的保留字保留字:编程语言本身需要使用的各种具有特定含义的标识符(关键字)硬指令助记符MOV伪指令助记符DB操作符OFFSET寄存器名EAX预定义符号@data取名原则类似高级语言,但不区别大小写字母标号:硬指令助记符目的操作数,源操作数;注释名字伪指令助记符参数,参数,参数;注释NEXT:MOVAL,23H;立即数23H送AL累加器tabledb18h,95h,0bh;定义表数据3.1.1语句格式DATASEGMENT;定义数据段…….;数据定义(待填)DATAENDSCODESEGMENT;定义代码段ASSUMECS:CODE,DS:DATA;段寄存器约定START:MOVAX,DATA;程序执行起始MOVDS,AX……;主程序(待填)……MOVAH,4CH;程序执行结束,返回DOSINT21H……;子程序(待填)CODEENDSENDSTART;汇编结束3.1.2程序格式—完整段定义格式.modelsmall;定义程序的存储模式.486;说明使用的80x86微处理器指令.stack;定义堆栈段.data;定义数据段……;数据定义(待填).code;定义代码段.startup;程序执行起始……;主程序(待填).exit;程序执行结束,返回DOS……;子程序(待填)end;汇编结束3.1.2程序格式—简化段定义格式3.1.2程序格式—逻辑段的简化定义堆栈段定义伪指令.STACK创建一个堆栈段段名:STACK,可用@STACK预定义操作符表示默认为1KB空间数据段定义伪指令.DATA创建一个数据段段名:_DATA,可用@DATA预定义操作符表示代码段定义伪指令.CODE创建一个代码段默认段名:_TEXT,可用@CODE预定义操作符表示.modelsmall;定义程序的存储模式.486;说明使用的80x86微处理器指令.stack;定义堆栈段.data;定义数据段……;数据定义(待填).code;定义代码段.startup;程序执行起始……;主程序(待填).exit;程序执行结束,返回DOS……;子程序(待填)end;汇编结束3.1.2程序格式—简化段定义格式3.1.2程序格式—程序执行的开始指明程序开始执行的位置.startup同时使DS等于用.DATA定义的数据段地址可用两条语句代替start:movax,datamovds,ax标号START用于指明程序开始执行的位置MASM汇编程序•设置CS和IP,SS和SP•没有设置DS、ES、FS、GS.modelsmall;定义程序的存储模式.486;说明使用的80x86微处理器指令.stack;定义堆栈段.data;定义数据段……;数据定义(待填).code;定义代码段.startup;程序执行起始……;主程序(待填).exit;程序执行结束,返回DOS……;子程序(待填)end;汇编结束3.1.2程序格式—简化段定义格式3.1.2程序格式—源程序的汇编结束翻译源程序成目标模块的过程到此结束源程序的最后必须有一条END语句汇编程序不处理END指令之后的任何内容END伪指令后面可以有一个“标号”参数endstart指定程序开始执行于该标号所指示的指令执行结束≠汇编结束.modelsmall;定义程序的存储模式.486;说明使用的80x86微处理器指令.stack;定义堆栈段.data;定义数据段……;数据定义(待填).code;定义代码段.startup;程序执行起始……;主程序(待填).exit;程序执行结束,返回DOS……;子程序(待填)end;汇编结束3.1.2程序格式—简化段定义格式3.1.2程序格式—程序执行的终止应用程序终止执行,将控制权交还操作系统.exit利用4CH号DOS功能调用实现movah,4chint21h功能编号AH=4CH入口参数AL=DOS返回码功能说明结束程序执行,返回DOS3.1.2程序格式—DOS功能调用MS-DOS操作系统提供给程序员的子程序调用子程序步骤(类似高级语言调用函数)在AH寄存器中设置系统功能调用号在指定寄存器中设置入口参数中断调用指令“INT21H”执行功能根据出口参数分析功能调用执行情况各种功能见附录B3.1.2程序格式—字符串显示功能调用主存的字符串以“$”作为结尾符功能编号AH=09H入口参数DS∶DX=欲显示的字符串逻辑地址(段地址∶偏移地址)功能说明将指定的字符串在当前光标位置开始显示;字符串可以是任何长度;可以包含控制字符(如回车0DH,换行0AH);必须以“$”(ASCII码为24H)字符结尾。3.1.2程序格式—信息显示程序在数据段给出字符串形式的信息msgdb'Hello,Assembly!',13,10,'$';定义要显示的字符串在代码段编写显示字符串的程序movdx,offsetmsg;指定字符串在数据段的偏移地址movah,9int21h;利用功能调用显示信息DATASEGMENT;定义数据段msgdb'Hello,Assembly!',13,10,'$’;数据定义(待填)DATAENDSCODESEGMENT;定义代码段ASSUMECS:CODE,DS:DATA;段寄存器约定START:MOVAX,DATA;程序执行起始MOVDS,AXmovdx,offsetmsg;主程序(待填)movah,9int21hMOVAH,4CH;程序执行结束,返回DOSINT21HCODEENDSENDSTART;汇编结束3.1.2程序格式—完整段定义格式3.1.2程序格式—信息显示程序操作3.1.2程序格式—信息显示程序3.1.2程序格式—信息显示程序.modelsmall;定义程序的存储模式.386;说明使用的80x86微处理器指令.stack;定义堆栈段.data;定义数据段……;数据定义(待填).code;定义代码段.startup;程序执行起始……;主程序(待填).exit;程序执行结束,返回DOS……;子程序(待填)end;汇编结束3.1.2程序格式—简化段定义格式作业仿照例题3-1编写源程序:利用DOS功能调用的02H号功能,实现在屏幕当前光标位置显示一个字符‘A’。

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功