ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:77.85KB ,
资源ID:7531476      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7531476.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(汇编语言知识点1.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

汇编语言知识点1.docx

1、汇编语言知识点1第一章十进制与二进制之间的转换(P2)降幂法除法十进制与六进制之间的转换(P5)降幂法除法补码表示:正数:采用符号绝对值法 负数:先写出对应的正数的补码表示,然后再将其按位数求反,最后末尾加1,就可以得到负数的补码表示补吗运算:二进制数按位求反后在末尾加1第二章一、 存储容量1K = 1024 =210 (Kilo) 1M =1024K = 220 (Mega) 1G = 1024M = 230 (Giga)1个二进制位:bit (比特) 8个二进制位:Byte(字节) 1Byte = 8bit2个字节:1 Word (字) 1Word = 2Byte = 16bit二、 存储

2、单元地址和内容1存储器以字节(8 bit)为编程单位2每个字节单元都有唯一的地址编码3地址用无符号整数来表示(编程用十六进制表示)4一个字要占用相继的两个字节5低位字节存入低地址,高位字节存入高地址6字单元地址用它的低地址来表示7机器以偶地址访问(读 / 写)存储器三、 物理地址 = 16 段地址 + 偏移地址四、 存储器的分段:20 根地址线:地址范围 00000H FFFFFH (1MB)机器字长16位:仅能表示地址范围 0000H FFFFH (64KB)小段:每16个字节为一小段,共有64K个小段段起始地址:小段首地址段的大小: 64K 范围内的任意字节五、 存储器的逻辑分段优点: 允

3、许程序在存储器内重定位;允许实模式程序在保护模式下运行;有利于程序和数据的分离。六、 中央处理器 8086/8088寄存器组:通用寄存器数据寄存器:AX,BX,CX,DX变址寄存器:SI、DI 指针寄存器:SP、BP控制寄存器: IP、FLAGS段寄存器:CS、DS、SS、ES七、 标志寄存器 ( FLAGS / PSW )条件标志位: OF 溢出标志 SF符号标志 ZF 零标志 CF 进位标志 AF 辅助进位标志 PF奇偶标志控制标志位: DF 方向标志 IF中断标志 TF 陷阱标志八、 寄存器与存储器的比较:寄存器:在CPU内部 ;访问速度快;容量小,成本高;用名字表示;没用地址存储器:在

4、CPU外部;访问速度慢;容量大,成本低;用地址表示;地址可用各种方式形成第三章寻址方式操作数所在位置物理地址(PA)格式注意1.立即寻址存储器的代码段无MOV AL, 5只能用源操作数操作数和源操作数的长度一致2.寄存器寻址寄存器(唯一)无MOV AX, BX字节寄存器只有AH AL BH BL CH CL DH DL CS 不能用 MOV 指令改变,源操作数和目的操作数的字长一致3.直接寻址存储器段地址+位移量MOV AX,ES:2000HMOV AX,VALUEMOV AX,2000H默认的段地址存储在DS中遇到BP的段地址存储在SS可以使用段跨越前缀4.寄存器间接寻址存储器段地址+基址/

5、变址MOV AX,BXMOV AX,ES:BX可用的寄存器:BX BP SI DI不允许使用AX、CX、DX 存放偏移地址(EA)SRC 和 DST 的字长一致 使用BP时,默认的数据段是SS,其余都是DS5.寄存器相对寻址存储器段地址+基址/变址+位移量MOV AX,COUSIMOV AX,ES:COU+SI MOV AX,COU+SI可以使用段跨越前缀6.基址变址寻址存储器段地址+基址+变址MOV AX,BX+SIMOV AX,BXSI可以使用段跨越前缀7.相对基址变址存储器段地址+基址+变址+位移量MOV AX,MASKBXSIMOV AX.MASKBX+SI可以使用段跨越前缀九、 数据

6、传送指令传送指令 MOV CPU内部寄存器之间的数据传送指令格式:MOV DST, SRC 执行操作:(DST) (SRC)注意: *DST、SRC 不能同时为段寄存器 MOV DS, ES * DST、SRC 不能同时为存储单元 *立即数不能直接送段寄存器 MOV DS, 2000H * DST 不能是立即数和CS *不影响标志位交换指令 XCHG指令格式:XCHG OPR1, OPR2 执行操作:(OPR1) (OPR2)例:XCHG BX, BP+SI XCHG AL, BH注意: * 两个操作数字长一致 * 两个操作数都不能是段寄存器 * 两个操作数都不能是立即数 * 两个操作数不能同

7、时是存储单元 * 可以采用除立即寻址方式外的任何一种寻址方式。 * 不影响标志位地址传送指令 LEA、LDS、LES 1.有效地址送寄存器指令: LEA REG, SRC 执行操作: (REG) SRC2.指针送寄存器和DS指令:LDS REG, SRC 执行操作: (REG) (SRC)(DS) (SRC+2) 相继二字 寄存器、DS3.指针送寄存器和ES指令: LES REG, SRC 执行操作: (REG) (SRC)(ES) (SRC+2) 相继二字 寄存器、ES 注意: * 源操作数必须为存储器操作数 * 目的操作数必须是一个16位通用寄存器,不能是段寄存器 * 源操作数可以是除立即

8、寻址和寄存器寻址以外的任意一种寻址方式 * 不影响标志位堆栈操作指令 PUSH、POP1.进栈指令: PUSH SRC执行操作: (SP) (SP) 2 ( (SP)+1, (SP) ) (SRC)出栈指令: POP DST执行操作: (DST) ( (SP)+1, (SP) ) (SP) (SP) + 2堆栈:先进后出的存储区,段地址存放在SS中,SP在任何时候都指向栈顶,进出栈后自动修改SP。注意: * 堆栈操作必须以字为单位。 * 不影响标志位 * 不能用立即寻址方式 PUSH 1234H * DST不能是CS POP CS 堆栈的用途:临时保存寄存器的内容。PUSH AXPUSH BX

9、PUSH CX ;其间用到AX、BX、CXPOP CX ; 后进先出POP BXPOP AX标志操作指令 LAHF、SAHF、PUSHF、POPF 、CLC、STC、CMC、CLD、STD、LI、STI标志传送指令: 1.标志送AH指令: LAHF 执行操作: (AH) (FLAGS的低字节)2.AH送标志寄存器指令:SAHF 执行操作: (FLAGS的低字节) (AH)注意: * LAHF不影响标志位 * SAHF影响CF、PF、AF、ZF、SF标志进栈指令: PUSHF 执行操作:(SP) (SP) - 2 ( (SP)+1, (SP) ) (FLAGS)标志出栈指令: POPF执行操作:

10、(FLAGS) ( (SP)+1, (SP) ) (SP) (SP) + 2注意:PUSHF和POPF经常一起联用,完成保护、维护标志寄存器的内容或改变标志位的值。标志位操作指令:清进位标志指令CLC CF 0置进位标志指令 STC CF 1进位标志取反指令CMC CF CF清方向标志指令CLD DF 0置方向标志指令STD DF 1清中断允许标志指令 CLI IF 0 置中断允许标志指令 STI IF 1 注意: * 只影响本指令指定的标志一十、 加减法指令:加法指令:ADD DST, SRC 执行操作: (DST) (SRC) + (DST)带进位加法指令: ADC DST, SRC 执行

11、操作: (DST) (SRC) + (DST) + CF加1指令: INC OPR 执行操作: (OPR) (OPR) + 1注意: * 除INC指令不影响CF标志外,均对状态标志位有影响。各加法指令对条件标志位的影响:SF=1,结果为负 ZF=1,结果为0 CF=1,和的最高有效位有向高位的进位OF=1,两个操作数符号相同,而结果符号与之相反CF 位表示 无符号数 相加的溢出。OF 位表示 带符号数 相加的溢出。减法指令: SUB DST, SRC 执行操作: (DST) (DST) - (SRC)带借位减法指令: SBB DST, SRC 执行操作: (DST) (DST) - (SRC)

12、 - CF减1指令: DEC OPR 执行操作: (OPR) (OPR) - 1求补指令: NEG OPR 执行操作: (OPR) - (OPR)比较指令: CMP OPR1, OPR2 执行操作: (OPR1) - (OPR2)各减法指令对条件标志位(CF/OF/ZF/SF)的影响:CF=1,被减数的最高有效位有向高位的借位 或 CF=1减数转换为加法运算时无进位OF=1 两个操作数符号相反,而结果的符号与减数相同CF 位表示 无符号数 减法的溢出。OF 位表示 带符号数 减法的溢出。NEG 指令对CF/OF的影响CF=0,操作数为0 OF=1,操作数为-128(字节运算)或-32727(字

13、运算一十一、 乘除运算指令无符号数乘法指令: MUL SRC 带符号数乘法指令: IMUL SRC执行操作:字节操作数 (AX) (AL) * (SRC) 字操作数 (DX, AX) (AX) * (SRC)注意: * 目的操作数必须是累加器 * AL (AX) 为隐含的乘数寄存器。 * AX (DX,AX) 为隐含的乘积寄存器。 * SRC不能为立即数。 * 除CF和OF外,对条件标志位无乘法指令对 CF/OF 的影响:MUL指令: CF,OF =00乘积的高一半为零 11否则IMUL指令: CF,OF =00乘积的高一半是低一半的符号扩展 11否则例:(AX) = 16A5H,(BX) =

14、 0611H(1) MUL BX ; (DX, AX) (AX) * (BX) ; 16A5*0611=0089 5EF5 ; (DX)=0089H (AX)=5EF5H CF=OF=1(2) IMUL BL ; (AX) (AL) * (BL) ; A5*11 5B*11=060B F9F5 ; (AX) = 0F9F5H CF=OF=1无符号数除法指令: DIV SRC带符号数除法指令: IDIV SRC执行操作:字节操作 (AL) (AX) / (SRC) 的商 (AH) (AX) / (SRC) 的余数 字操作 (AX) (DX, AX) / (SRC) 的商 (DX) (DX, AX

15、) / (SRC) 的余数注意: * AX (DX,AX) 为隐含的被除数寄存器。 * AL (AX) 为隐含的商寄存器。 * AH (DX) 为隐含的余数寄存器。 * SRC不能为立即数。 * 对所有条件标志位均无定义。一十二、 类型转换指令CBW AL AX执行操作: 若(AL)的最高有效位为0,则(AH)= 00H,若(AL)的最高有效位为1,则(AH)= FFHCWD AX (DX,AX)执行操作:若(AX)的最高有效位为0,则(DX)= 0000H,若(AX)的最高有效位为1,则(DX)= FFFFH例:(AX) = 0BA45HCBW ; (AX)=0045H CWD ; (DX)

16、=0FFFFH (AX)=0BA45H注意: * 无操作数指令 * 隐含对AL 或AX 进行符号扩展* 不影响条件标志位一十三、 逻辑运算指令逻辑非指令:NOT OPR * OPR不能为立即数执行操作: (OPR) (OPR) * 不影响标志位 CFOFSFZFPFAF00*无定义逻辑与指令:AND DST, SRC 执行操作: (DST) (DST) (SRC)逻辑或指令:OR DST, SRC 执行操作: (DST) (DST) (SRC)异或指令: XOR DST, SRC 执行操作: (DST) (DST) (SRC)测试指令: TEST OPR1, OPR2 执行操作: (OPR1)

17、 (OPR2) 一十四、 移位指令逻辑左移 SHL OPR, CNT 逻辑右移 SHR OPR, CNT 算术左移 SAL OPR, CNT(同逻辑左移) 算术右移 SAR OPR, CNT 循环左移 ROL OPR, CNT 循环右移 ROR OPR, CNT 带进位循环左移 RCL OPR, CNT 带进位循环右移 RCR OPR, CNT 注意: * OPR可用除立即数以外的任何寻址方式 * CNT=1, SHL OPR, 1 CNT1,MOV CL, CNT SHL OPR, CL ; 以SHL为例 * 条件标志位:CF = 移入的数值 1 CNT=1时,最高有效位的值发生变化 0 C

18、NT=1时,最高有效位的值不变移位指令: SF、ZF、PF 根据移位结果设置,AF无定义循环移位指令:不影响 SF、ZF、PF、AF一十五、 控制转移指令: 无条件转移指令 JMP 条件转移指令JZ / JNZ 、 JE / JNE、 JS / JNS、 JO / JNO、JP / JNP、 JB / JNB、 JL / JNL、 JBE / JNBE、JLE / JNLE、 JCXZ 循环指令 LOOP、LOOPZ / LOOPE、LOOPNZ / LOOPNE 子程序调用和返回指令 CALL、RET 中断与中断返回指令 INT、INTO、IRET一十六、 与转移地址有关的寻址方式:用来确定

19、转移指令及转子指令的转向地址段内寻址 段内直接寻址 JMP NEAR PTR NEXT 段内间接寻址 JMP TABLE BX 段间寻址 段间直接寻址 JMP FAR PTR NEXT 段间间接寻址 JMP DWORD PTR BX 无条件转移指令:段内直接短转移:JMP SHORT OPR 执行操作:(IP) (IP) + 8位位移量段内直接近转移:JMP NEAR PTR OPR 执行操作:(IP) (IP) + 16位位移量段内间接转移: JMP WORD PTR OPR 执行操作:(IP) (EA)段间直接远转移:JMP FAR PTR OPR 执行操作:(IP) OPR 的段内偏移地

20、址 (CS) OPR 所在段的段地址段间间接转移:JMP DWORD PTR OPR 执行操作:(IP) (EA) (CS) (EA+2)注意: * 不影响标志位一十七、 条件转移指令注意: * 只能使用段内直接寻址的8 位位移量 * 不影响标志位(1) 根据单个条件标志的设置情况转移 格式 测试条件JZ(JE) OPR ZF = 1JNZ(JNE) OPR ZF = 0JS OPR SF = 1JNS OPR SF = 0JO OPR OF = 1JNO OPR OF = 0JP OPR PF = 1JNP OPR PF = 0JC OPR CF = 1JNC OPR CF = 0(2) 比

21、较两个无符号数,并根据比较结果转移 格式 测试条件 JB (JNAE,JC) OPR CF = 1 JNB (JAE,JNC) OPR CF = 0 JBE (JNA) OPR CFZF = 1 JNBE (JA) OPR CFZF = 0* 适用于地址或双精度数低位字的比较(3) 比较两个带符号数,并根据比较结果转移 * 适用于带符号数的比较 格式 测试条件 JL (JNGE) OPR SFOF = 1 JNL (JGE) OPR SFOF = 0 JLE (JNG) OPR (SFOF)ZF = 1 JNLE (JG) OPR (SFOF)ZF = 0 (4) 测试 CX 的值为 0 则转

22、移 格式 测试条件 JCXZ OPR (CX)=0一十八、 循环指令注意: * CX 中存放循环次数* 只能使用段内直接寻址的8 位位移量 * 不影响标志位LOOPLOOPZ / LOOPELOOPNZ / LOOPNE执行步骤: (1) (CX) (CX) 1 (2)检查是否满足测试条件,如满足则 (IP) (IP) + 8位位移量,实行循环; 不满足则 IP 不变,退出循环循环指令:LOOP OPR测试条件:(CX) 0为零或相等时循环指令:LOOPZ(LOOPE) OPR测试条件:ZF=1 且 (CX) 0不为零或不相等时循环指令:LOOPNZ(LOOPNE) OPR测试条件:ZF=0

23、且 (CX) 0一十九、 例:求首地址为 ARRAY 的 M 个字之和,结果存入 TOTALMOV CX, MMOV AX, 0MOV SI, AXAGAIN: ADD AX, ARRAYSIADD SI, 2LOOP AGAINMOV TOTAL, AX二十、 串处理指令 串处理指令 串重复前缀 LODSB / LODSW REP STOSB / STOSW REPE / REPZ MOVSB / MOVSW REPNE / REPNZ SCASB / SCASW CMPSB / CMPSWLODS 从串取指令: LODS SRC LODSB (字节) LODSW (字)执行操作: 字节操作

24、:(AL)(SI), (SI)(SI)1 字操作:(AX)(SI), (SI)(SI)2注意: * LODS 指令一般不与 REP 联用 * 源串一般在数据段中(允许使用段跨越前缀来修改), 目的串必须在附加段中 * 不影响条件标志位STOS 存入串指令:STOS DSTSTOSB (字节)STOSW (字)执行操作: 字节操作:(DI)(AL), (DI)(DI)1 字操作:(DI)(AX), (DI)(DI)2MOVS 串传送指令:MOVS DST, SRCMOVSB (字节)MOVSW (字)例:MOVS ES: BYTE PTR DI, DS: SI执行操作:(1) (DI) (SI)

25、 (2) 字节操作:(SI)(SI)1, (DI)(DI)1 字操作: (SI)(SI)2, (DI)(DI)2 方向标志 DF=0 时用 + ,DF=1 时用 - 。SCAS 串扫描指令: SCAS DST SCASB (字节) SCASW (字)执行操作: 字节操作:(AL) - (DI), (DI)(DI)1 字操作:(AX) - (DI), (DI)(DI)2CMPS 串比较指令: CMPS SRC, DSTCMPSB (字节)CMPSW (字)执行操作: (1) (SI) - (DI)根据比较结果置条件标志位:相等 ZF=1;不等 ZF=0 (2) 字节操作:(SI)(SI)1, (

26、DI)(DI)1 字操作: (SI)(SI)2, (DI)(DI)2REP (与 MOVS / STOS配合工作)执行操作:(1) 如 (CX)=0 则退出 REP,否则转(2) (2) (CX) (CX) -1 (3) 执行 MOVS / STOS / LODS (4) 重复 (1) (3)REP MOVS:将数据段中的整串数据传送到附加段中。源串(数据段) 目的串(附加段)执行 REP MOVS 之前,应先做好:(1) 源串首地址(末地址) SI(2) 目的串首地址(末地址) DI(3) 串长度 CX(4) 建立方向标志 ( CLD 使 DF=0,STD 使 DF=1 ) REPE / R

27、EPZ REPNE / REPNZ (与CMPS 和 SCAS配合工作)执行操作: (1) 如 (CX)=0 或 ZF=0 (ZF=1) 则退出串操作,否则转(2) (2) (CX)(CX) -1 (3) 执行 CMPS / SCAS (4) 重复 (1) (3)例:从一个字符串中查找一个指定的字符mess db COMPUTERlea di, mess mov al, T mov cx, 8 cld repne scasb例:比较两个字符串,找出它们不相匹配的位置lea si, mess1lea di, mess2mov cx, 8cldrepe cmpsb例:反向传送lea si, mes

28、s1+7lea di, mess2+7mov cx, 8STdrep movsb第四章二十一、 标号和变量(1)标号和变量都是标识符。标识符组成:字母 az ,数字 09,专用字符 ? . _ $标识符的组成规则:最大长度为31,第一个字符不能是数字,不区分字母的大小写,不能是汇编语言的保留字(2)标号和变量的异同:不同:标号:用于汇编指令语句中,以冒号结束,在代码段中定义,经常在转移指令或call指令变量:用于伪指令语句中,不允许有冒号,在数据段或附加段中定义,经常在操作数字段出现相同:都有三种属性:段属性、偏移属性、类型属性二十二、 伪操作是汇编程序对源程序进行汇编时处理的操作,完成处理器选择、存储模式定义、数据定义、存储器分配、指示程序开始结束等功能。处理器选择伪操作 段定义伪操作程序开始和结束伪操作 数据定义及存储器分配伪操作表达式赋值伪操作 地址计数器与对准伪操作基数控制伪操作二十三、 段定义伪操作data segment ; 定义数据段 data ends;-extra segment ; 定义附加段 extra ends;-code segment ; 定义代码段 assume cs:code, ds:data, es:extrastart: mov ax, data mov ds, ax ; 段地址 段寄存器 co

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1