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

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

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

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

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

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

微机原理----汇编语言程序设计(1)本次课学习内容本次课学习目标汇编语言汇编语言和高级语言的比较汇编程序汇编语言程序的建立及汇编过程一个简单的汇编程序汇编语言的语句格式名字项标号变量分段结构设置段寄存器的初值程序开始和结束操作结束过程定义操作微机原理----汇编语言程序设计(2)主要内容变量定义伪指令主要包括下列几种: DB(DefineByte):定义字节,后面的每个操作数占1个字节。 DW(DefineWord):定义字,后面的每个操作数占1个字。 DD(DefineDWord):定义双字,后面的每个操作数占2个字。 DQ(DefineQWord):定义四字,后面的每个操作数占4个字。 DT(DefineTbyte):定义十字节,后面的每个操作数占10个字节。操作数字节量数据(Byte-sized)字变量数据双字量数据(Doubleword-sized)符号定义伪指令关于符号定义伪指令的说明对准伪操作程序计数器$标号定义伪指令LABEL汇编语言的表达式和运算符主要包括加(+)、减(-)、乘(*)、除(/)和求余(MOD)、左移(SHL)、右移(SHR)。其中MOD是指除法运算后得到的余数。 算术运算符可以用于数字表达式或地址表达式中,但当它用于地址表达式时,只有当其结果有明确的物理意义时其结果才是有效的。例如两个地址相乘或相除是无意义的。 在地址表达式中,可以使用+或者-,但也必须注意其物理意义。例如把两个不同段的地址相加也是无意义的。经常使用的是地址+数字量,它是有意义的。例如SUM+1是指SUM字节单元的下一个字节单元的地址。主要包括与(AND)、或(OR)、异或(XOR)、非(NOT) 逻辑运算符是按位操作的,它只能用于数字表达式中。 主要包括EQ(相等时为真)、NE(不相等时为真)、LT(小于时为真)、GT(大于时为真)、LE(小于或等于时为真)、GE(大于或等于时为真)等6种。 关系运算符的两个操作数必须都不能是数字或是同一段内的两个存储器地址。 其计算的结果为逻辑值,为真,则为全1,为假,则为全0也称数据送回(Valuereturning)运算符,包括TYPE、LENGTH、SIZE、OFFSET、SEG五种,这些运算符把一些特征或存储器地址的一部分作为数值回送。TYPE 格式:TYPEVariable或label 如果是变量,则汇编程序将回送该变量的以字节数表示的类型,DB为1,DW为2,DD为4,DQ为8,DT为10。 如果是标号,则汇编程序将回送代表该标号类型的数值:NEAR为-1,FAR为-2。 SIZE 格式为:SIZE变量 其汇编的值为LENGTH变量*TYPE变量,即回送直接分配给该变量的总的字节数。汇编语言的运算符——综合运算符PTR 格式为:类型PTR地址表达式 PTR用来建立一个符号地址,但它本身并不分配存储器,只是用来给已分配的存储地址赋予另一种属性,使该地址具有另一种类型。 格式中的类型字段表示所赋予的新的类型属性,而表达式字段则是被取代类型的符号地址。 如果是变量,类型可取BYTE,WORD,DWORD。 如果是标号,类型可取NEAR和FAR。SHORT 用来修饰JMP指令中转向地址的属性,指出转向地址是在下一条指令地址±127个字节范围之内。微机原理—汇编语言程序设计(3)80X86指令系统学习指导指令的基本格式寻址方式寻址方式立即数寻址操作数在寄存器中,指令指定寄存器号。 对于16位操作数,寄存器可以是AX、BX、CX、DX、SI、DI、SP和BP等。 对于8位操作数,寄存器可以是AL、AH、BL、BH、CL、CH、DL和DH。 这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数,因而可以取得较高的运算速度。在IBMPC机中,把操作数的偏移地址称为有效地址EA 在存储器寻址方式中,操作数是某个内存单元的内容(值),指令中给出的是内存单元的有效地址EA,段地址通常在隐含的某个段寄存器中。由EU计算出EA,再由BIU根据PA=16*段首址+EA计算出实际地址,执行总线周期访问存储器,取得操作数,最后再执行指令规定的基本操作。 一条指令中,只能有一个存储器操作数(源操作数或目的操作数)根据EA的计算方法,存储器寻址可分为以下几类: 直接寻址方式 寄存器间接寻址 寄存器相对寻址 基址变址寻址 相对基址加变址寻址 操作数的偏移地址(有效地址EA)直接用指令加以指定(有直接地址值和标号两种形式),它存放在代码段中指定操作码之后,但操作数一般存放在存储器的数据段中,所以必须先求出操作数的物理地址,然后再访问存储器才能取得操作数。 段地址隐含的由DS指定,也可以ES指定,但需在指令中指明。最后存储器地址为:DS:偏移地址或ES:偏移地址。 图示 实例 寄存器间接寻址方式的操作数形式