预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共48页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第四章8086汇编语言程序设计几个概念4.18086汇编语言的语句4.28086汇编中的伪指令 2、等号语句 格式: NUM=34 …… NUM=34+1 二、变量定义语句 格式:符号名DB/DW/DD表达式 1、定义一组数据 例1:BUFFDW1234H,0ABCDH,8EH DW–79DH,7B6AH 2、定义一串字符 例2:STRDB‘Welcome!’ 3、定义保留存储单元 例3:SUMDW?, ? 4、复制操作 复制操作符DUP(Duplication)可预置重复的数值 例4:ALL_ZERODB0,0,0,0,0 用复制操作可改为: ALL_ZERODB5DUP(0) 5、将已定义的地址存入内存单元 例5:LITDDCYC … CYC:MOVAX,BX三、段定义语句 1、段定义语句格式: 段名SEGMENT[定位类型][组合类型][‘类别’] …… 段名ENDS 只需要掌握 段名SEGMENT …… 段名ENDS 2、段假设语句 ASSUME段寄存器名:段名[,…] 3、ORG伪指令、地址计数器$ ORG伪指令格式:ORG<表达式> 4、END表示源代码结束 格式为:END常数或表达式. 四、过程定义语句 过程名PROCNEAR/FAR …… RET 过程名ENDP4.38086汇编中的运算符3、关系运算符 EQ(相等)、NE(不等、) LT(小于)、GT(大于)、 LE(小于等于)、GE(大于等于)。 关系成立,全1 关系不成立,全0 例:MOVDL,10HLT16 MOVDL,0 例:ANDAX,555GT222 ANDAX,0FFFFH 二、常用的操作符 4、分析操作符 1)SEG操作符 例:MOVAX,SEGBUFF 2)OFFSET操作符 例:MOVBX,OFFSETBUFF3)TYPE操作符 对于变量有3种:1字节型; 2字型; 4双字型; 对于标号有2种:-1NEAR(段内), -2FAR(段间)。 例:BUFFDB20H MOVBX,TYPEBUFF MOVBX,01 4)LENGTH操作符 5)SIZE操作符 SIZE=TYPE×LENGTH 例:BUFFDB10DIP(?) MOVCX,LENGTHBUF MOVCX,10 MOVCX,SIZEBUF MOVCX,20 5、综合运算符(合成操作符) 功能: 1、由已有的操作数建立新的操作数; 2、新操作数和已有的操作数类型不一样 1)PTR运算符 格式:类型PTR表达式 例:INCWORDPTR[BX] wx dw1234h moval,byteptrwx movah,byteptrwx+1 2)THIS操作符 格式:THIS类型(或属性) 例:FIRSTEQUTHISBYTE SECONDDW100DUP(?)4.4汇编语言程序设计框架一: DATA SEGMENT ;定义数据段 VAL1DB12H,8EH ;定义变量 …… DATA ENDS ;数据段结束 CODE SEGMENT ;定义代码段 ASSUMEDS:DATA,CS:CODE ;段属性说明 START:MOVAX,DATA ;初始化DS MOVDS,AX …… ;填写代码 MOVAX,4C00H ;返回DOS INT21H CODEENDS ;代码段结束 ENDSTART ;源程序结束 框架二: DATA SEGMENT ;定义数据段 VAL1DB12H,8EH ;定义变量 …… DATA ENDS ;数据段结束 CODE SEGMENT ;定义代码段 MAIN PROCFAR ASSUMEDS:DATA,CS:CODE ;段属性说明 START:PUSHDS MOVAX,0 PUSHAX MOVAX,DATA MOVDS,AX …… ;填写代码 RET MAIN ENDP CODEENDS ;代码段结束 ENDSTART ;源程序结束 一、汇编语言程序设计基本步骤 分析问题,确定模型 确定算法 绘制流程图 编写程序 检查和调试 二、汇编语言程序的基本结构 1、顺序结构 举例2、分支结构举例3、循环结构举例 ;这是一个乘10子程序 ;使用寄存器AX ;入口:AX,出口:AX mul10 procfar pushbx ;保护现场 pushf addax,ax ;2ax movbx,ax ;2axbx a