




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一篇汇编语言16位汇编第三部分知识总结第三部分汇编语言程序设计基础心灵鸡汤程序员的工作是程序设计、编写代码、完成特定的功能需求,不是看视频大部分时间是用来梳理需求,设计结构,算法,只需要小部分时间来写代码分析需求、设计结构、伪代码、流程图、写代码多写、多练、多调试,代码量是衡量程序员技术水平的重要标准学习语法概念等基础知识只需要很少时间,其他大量的时间是练习、练习、再练习养成良好的编码习惯:标号、变量名和注释不要把自己累死,重要的是消化吸收,掌握原理,融会贯通欲速则不达,系统化的学习,打牢基础,然后才可以一马平川,从横驰骋1、汇编语言及程序设计语句的种类和格式指令语句:有对应的机器码伪指令语句:无对应的机器码,指示汇编程序如何汇编源程序,包括符号、变量、段的定义宏汇编中还有一种,宏指令语句(后面的课程再学)指令语句[标号:]指令助记符[操作数[,操作数]]][;注释]操作数可以为常数(数值表达式),寄存器(寄存器名),存储器操作数(地址表达式)伪指令语句[名字]伪指令定义符[参数,...参数][;注释]伪指令定义符规定了伪指令的功能。参数的个数和类型由伪指令不同而不同。参数可以是常数(数值表达式),也可以是符号。名字有的伪指令可以缺省。数值表达式常数:二进制、十进制、十六进制、字符串算术运算符:+、-、*、/、MOD关系运算符:相等EQ不等NE小于LT大于GT
·小于或等于LE、大于或等于GE逻辑运算符:AND、OR、XOR、NOT、SHL、SHR操作符:HIGH高8位、LOW低8位、LENGTH、SIZE、OFFSET、SEG、TYPE、WIDTH、MASK运算符和操作符的优先级:各种括号、操作符、算术运算符、关系运算符、逻辑运算符地址表达式:地址表达式表示存储器操作数的地址。
[VARW+BX+DI]2、变量和标号变量和标号分别代表存储单元。变量表示存储单元中存放的数值,标号表示存储单元中存放的指令代码。1、数据定义语句格式:[变量名]
数据定义符表达式[,
表达式,...表达式] ;注释例:VARBDB3VARWDW-12345DD?2.重复操作符DUP定义数组,定义缓冲区的需要BUFFERBUFFERDB
8
DUP(0)DB
0,0,0,0,0,0,0,01)变量和标号的属性段值偏移类型:变量类型BYTE
WORD
DWORD标号类型NEAR
FAR2.析值操作符SEGOFFSETTYPE变量名或标号变量名或标号变量名或标号段值偏移返回变量或者标号的类型LENGTH变量名操作符LENGTH返回利用DUP定义的数组中元素的个数SIZE变量名变量=(LENGTH变量)×(TYPE变量)3、属性操作符操作符PTR:指明操作数类型:BYTE,WORD,DWORD,NEAR,FAR操作符THIS:类型与PTR一致,返回一个具有指定类型的存储器操作数,但不为该操作数分配存储单元,返回存储器操作数的段值和偏移就是下一个将分配的存储单元的段值和偏移。
MY_BYTE
EQU
THIS
BYTE
;EQU是符号定义语句的定义符NY_WORD
DW
?4、伪指令和源程序通过符号定义语句,可以把常数、表达式等用符号表示。恰当地使用符号定义语句,不仅可以大大方便程序的书写和阅读,也有利于程序的调试和修改1.等价语句EQU格式:符号名EQU表达式(1)用符号来代表常数或者数值表达式COUNT EQU
100 ;符号COUNT代表常数100用符号表示一个字符串
HELLO
EQU
"HELLO
WORD"重新定义关键字或助记符MOVE
EQU
MOVCOUNT
EQU
CX;MOVE代替MOV;COUNT代替CX(4)定义存储器操作数符号VARW
EQU
THIS
WORD ;VARW的类型是字等号语句(=):用符号来表示一个常数符号名=表达式定义符号名语句格式:符号名
LABEL 类型类型有:BYTE、WORD、DWORD、NEAR、FAR等。功能是定义有符号名指定的符号,使该符号的段属性和偏移属性与紧接着的存储单元相同,该符号的类型为参数所规定的类型。5、段定义语句段定义语句:用来按段组织程序和利用存储器,与存储器的分段结构相对应。
1.段开始和结束语句data
segmentdb
1,2,3,4,5data
ends2.段使用设定语句格式:assume段寄存器名:段名[,段寄存器名:段名,...]ASSUME
CS:CODE,DS:DATA1,SS:STACK,ES:DATA23.ORG语句:调整地址计数器的当前值数值表达式格式:ORGTESTSEG
SEGMENTORG
100HBEGIN:;调整当前地址计数器的值为100H;此处BEGIN的偏移为100HVARMOV
AX,1234H......ORG
500HDW
1234H......TESTSEG
ENDS汇编语言用$符号表示当前地址计数器的值,可以直接引用
ORG
$+8记住$当前地址计数器的值是不断变化的例:ARRAY DW
1,2,$+4,3,4,$+46、汇编语言源程序的组织1.一个完整的源程序;程序名:T3-1.ASM;功能:显示信息“HELLO”;============================assume
cs:code,ds:datasseg
segmentdw
256
dup(?)sseg
endsdata
segmentmess db
"HELLO",0dh,0ah,"$"data
ends;设数据段寄存器;显示信息“HELLO”;返回DOScode
segmentstart:mov
ax,datamov
ds,axmov
dx,offset
messmov
ah,9int
21hmov
ax,4c00hint
21hcode
endsend
start该程序含有3个逻辑段,堆栈段,数据段,代码段,对应3个物理段。DOS把控制权转到该程序时,将设置妥CS:IP7、顺序程序设计8、分支程序设计9、循环程序设计10、子程序设计将反复出现的程序片段设计成子程序。例如标准函数库。优点:有效缩短程序长度,节约存储空间,大大减轻程序设计工作量。通用性,共享性,相对独立,方便阅读、调试修改。1、过程调用和返回指令:段间远调用、远返回;段内近调用、近返回;直接调用和间接调用
2、过程定义语句过程名 PROC
[NEAR
|
FAR]...过程名ENDP11、参数传递寄存器传参约定内存单元传参堆栈传参
4.call后续区传参12、递归1递归子程序如果子程序可以直接调用它自身,称为直接递归调用如果子程序间接调用它自身,称为间接递归调用具有递归调用的子程序称为递归子程序递归是嵌套的特殊情形递归子程序必须采用寄存器或堆栈传递参数递归的深度受堆栈空间的限制13、可重入子程序子程序的重入是指子程序在中断后被重新调用。重入是被动行为,递归式主动行为重入前的调用和重入调用往往是不相干的,而递归调用密切相关14、DOS功能调用什么是DOS功能调用程序员调用DOS操作系统提供的各种编号子程序包括设备驱动(基本I/O)、文件管理和其他(包括内存管理,置取时间、置取中断向量、终止程序等)。调用方法根据需要调用准备入口参数,有部分功能不需要入口参数把功能调用号送AH寄存器发软中断指令“INT
21H”2、基本I/O功能调用带回显键盘输入(1号功能调用)不带回显键盘输入(8号功能调用)直接键盘输入(7号功能调用)显示输出(2号功能调用)直接控制台输入输出(6号功能调用)显示字符串(9号功能键)输入字符串(0AH号功能调用)取键盘输入状态(OBH号功能调用)清除输入缓冲区后再输入(OCH号功能调用)打印输出(5号功能调用)15、磁盘文件管理及应用上建立文件3CH号功能调用打开文件3DH号功能调用读文件3FH号功能调用写文件40H号功能调用关闭文件3EH号功能调用移动文件读写指针42H号功能调用删除文件41H号功能调用16、简单应用程序设计1、字符串操作指令一般说明
DS:SI指向源串
ES:DI指向目的串DF=0,SI、DI递增DF=1,
SI、DI递减字符串装入指令:LODSB,LODSW不影响标志位字符串存储指令:STOSB,STOSW不影响标志位字符串传送指令:MOVSB,MOVSW不影响标志位字符串扫描指令:SCASB;字节SCASW;字字符串比较指令:CMPSB,CMPSW2、重复前缀目的:替代重复循环串操作
1.重复前缀REPREPZ/REPE指令:CX=0或者操作指令使ZF=0时,结束重复串操作。重复前缀REPNZ/REPNE:与REPZ相似,CX=0或ZF=1时结束18、十进制算术运算组合的BCD码加法调整指令DAA组合的BCD码减法调整指令DAS未组合的BCD码加法调整指令AAA未组合的BCD码减法调整指令DAS未组合的BCD码乘法调整指令AAM未组合的BCD码除法调整指令AAD19、DOS程序前缀程序段前缀PSP程序段前缀是DOS加载一个外部命令或应用程序(EXE或COM类型)时,在程序段之前设置的一个具有256字节的信息区。终止程序的另一途径应用程序取得命令行参数4、CTRL+C、CTRL+BREAK20、TSR程序设计举例TSR意思时结束并驻留。TSR程序是一种特殊的DOS应用程序,不同于结束即退出的一般DOS应用程序。TSR程序装入内存并
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45131-2025锅炉用水和冷却水分析方法磷酸盐、氯化物、硅酸盐、总碱度、酚酞碱度、硬度和铁的测定基于间断分析系统的分光光度法
- 【正版授权】 ISO TS 81001-2-1:2025 EN Health software and health IT systems safety,effectiveness and security - Part 2-1: Coordination - Guidance for the use of assurance cases for safe
- 新能源智能电网项目合作框架协议
- 电子废物回收处理项目合同
- 水管采购合同
- 热泵供暖设备采购合同
- 重庆简单房屋租赁合同(31篇)
- 电子商务平台卖家权益保护协议
- 自愿送养收养协议书
- 年度活动策划与执行工作方案
- 运动会活动流程中的医疗安全保障措施
- 2025公司员工试用期合同(范本)
- 第十章皮肤软组织扩张术医学美容教研室袁晓野讲解
- 2025年冷链物流产品配送及仓储管理承包合同3篇
- 2024-2025学年成都高新区七上数学期末考试试卷【含答案】
- 浙教版2023小学信息技术六年级上册《人机对话的实现》说课稿及反思
- 2025年山东出版集团有限公司招聘笔试参考题库含答案解析
- 【开题报告】中小学校铸牢中华民族共同体意识教育研究
- 2022+ADA/EASD共识报告:2型糖尿病高血糖的管理
- 2024-2025学年云南省大理州七年级(上)期末英语试卷(含答案)
- 中国远洋海运集团招聘笔试冲刺题2025
评论
0/150
提交评论