1-4章1.没有-0的补码,8位二进制时-128的补码就是100000002.补码的补码等于原码3.(x+y)补=x补+y补4.溢出:运算结果超出了运算器所能表示的范围5.CPU判溢:如加数与被加数的最高位相同,却与结果的最高位相异,则将溢出标志置为16.程序员判溢:如果参与运算的数是无符号数,则判进位标志,进位标志=1,表示溢出错;如果参与运算的数是有符号数,则判溢出标志,溢出标志=1,表示溢出错。7.变质寻址中,比例因子只能是1、2、4、8中的一个数8.对于MOV指令,立即数不能直接送段寄存器;不允许在两个段寄存器之间传送数据9.对各操作指令是否影响标志位的总结:(1)传送指令(MOV、LEA等):不影响(2)堆栈指令(PUSH、POP):POPF影响,其他不影响(3)算数指令1)加法指令:影响6个(INC不影响C标志)2)减法指令:影响6个(DEC不影响C标志)3)求补指令:影响6个4)比较指令:影响6个5)乘法指令:影响O、C标志6)除法指令:不影响7)BCD码调整指令:影响(具体影响位见第10点内)(4)逻辑运算指令:1)逻辑运算(AND、OR、NOT、XOR、TEST)除NOT不影响标志位外,均影响OSZPC标志(即除A标志外,并且其中O、C置0)2)一般移位指令(SHL、SAL、SHR、SAR)均影响OSZPC(即除A标志外)3)循环移位指令(ROL、ROR、RCL、RCR)均只影响O、C标志(5)转移和调用指令:不影响10.需要掌握的指令集一.传送类指令(1)通用传送1)数据传送MOV2)地址传送LEA3)交换指令XCHG4)查表指令XLAT(查找的是数据段中的字节表,EBX/BX=表头有效地址,AL=元素对表头偏移地址)(2)堆栈指令(操作数必须是字或者双字。SP指向的是最后推入堆栈的信息的所在单元,注意进栈时SP向低位移动,即向低地址方向延伸。入栈时先入高位后入低位,出栈时相反)1)进栈PUSH2)出栈POP3)标志寄存器出入栈PUSHF/POPF4)通用寄存器保护现场PUSHA/POPA二.算数运算指令1)加法ADD、ADC、INC(INC将操作数视为无符号数,不影响C标志)2)减法SUB、SBB、DEC(同上)3)求补指令NEG(即求负数)4)比较指令CMP(同SUB,但不保存结果)5)乘法指令MUL(无符号乘法,隐含目的操作数DX、AX,源操作数不能是立即数)、IMUL(带符号乘法,隐含目的操作数DX、AX,源操作数不能是立即数)6)除法指令DIV(无符号除法,同上)、IDIV(有符号除法,同上)7)BCD码调整指令:加法:DAA(组合BCD,影响除O标志外的标志位)、AAA(未组合BCD,只影响A、C标志位)减法:DAS(组合BCD,影响除O标志外的标志位)、AAS(未组合BCD,只影响A、C标志位)乘法:AAM(未组合BCD,只影响P、S、Z标志位)除法:AAD(未组合BCD,只影响P、S、Z标志位)三.逻辑运算指令(1)逻辑运算指令逻辑与AND、逻辑或OR、逻辑非NOT、逻辑异或XOR、测试TEST(进行AND运算,但结果不送入目标操作数)(2)移位指令:书P101四.转移和调用指令(1)无条件转移JMP(2)条件转移(括号内为转移条件)1)单个条件标志:JZ/JNZ、JS/JNS、JO/JNO、JP/JNP、JCXZ(CX=0转移)2)无符号数大小比较(前跟CMP):JC(小于)/JNC(不小于)、JA(大于)/JNA(不大于)3)有符号数大小比较(前跟CMP):JL(小于)/JLE(不小于)、JG(大于)/JGE(不大于)(3)循环控制转移1)LOOP:CX不等于0转移2)LOOPZ/LOOPE:CX不等于0且Z=1转移3)LOOPNZ/LOOPNE:CX不等于0且Z=0转移(4)子程序调用CALL/返回RET(注意子程序定义格式PROC/ENDP)调用时可以间接转移,如BX存储转移地址注意调用时将IP存于堆栈段带返回参数的RETEXP:即释放多余的参数占用的堆栈空间(见第三章PPT第170页)五.串操作指令(1)串传送:把DS:[SI]的若干元素→ES:[DI]的若干单元MOVSB/MOVSW/MOVSD(传送一个元素后CPU自动修改SI、DI,D标志为0时SI、DI自增,D标志为1自减)有重复前缀的格式:如REPMOVSB,以CX为计数器(2)串装入:LODSBDS:[SI]→ALLODSWDS:[SI]→AXLODSDDS:[SI]→EAX(同样根据D标志决定方向)(3)串存储:STOSBAL→ES:[DI]1个单元STOSWAX→ES:[SI]2个单元STOSDEAX→ES:[DI]4个单元(D标志决定方向)同样有重复前缀格式REPSTOSB/STOSW/STOSD,CX为计数器(4)串比较:源串地址→DS:[SI],目串地址→ES:[DI],D标志决定方向CMPSB:字节串比较CMPSW:字串比较CMPSD:双字比较结果是根据比较量元素是否相等,相等则Z标志置1,不等置0同样有重复前缀REPE(相等则继续循环)/REPNE(不等则继续循环)CMPSB/CMPSW/CMPSD(CX为计数器)(5)串搜索:在ES:[DI]的目标区搜索是否有规定的关键字,目标地址→ES[DI],D决定方向,关键字→AL/AX/EAXSCASB/SCASW/SCASD,如果找到关键字,则Z标志置1,否则置0同样有重复前缀格式REPE/REPNESCASB/SCASW/SCASD,CX为计数器六.处理机控制指令(1)标志处理指令1)CLC/STC:C标志置0/12)CMC:C标志取反3)CLD/STD:D标志置0/14)CLI/STI:I标志置0/1(2)其他处理指令1)WAIT:处理器等待2)ESC:处理器交权3)LOCK:封锁总线4)HLT:处理器暂停5)NOP:空操作指令11.完整的段定义格式.586DATASEGMENTUSE16...DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AX...MOVAH,4CHINT21HCODEENDSENDBEG;汇编结束语句,注意位置(注意一下定位参数、链接参数、分类名、段长度【USE16表示单元有效地址为16位】的含义,尤其是AT表达式【表示段基址,常配合ORG使用】。定位伪指令ORG用于通知汇编程序将下一条指令或数据存放在表达式给出的偏移地址。如果有堆栈段的话,堆栈段的链接属性应为STACK,分类名为'STACK'且不能省略。EXE文件汇编源程序必须有堆栈段,否则发出警告)(注意:COM文件编程格式要求使用定位ORG伪指令将程序的启动指令放在代码段偏移地址为100H的单元)12.DOS调用格式:MOVAH,功能号...;设置入口参数INT21H;执行DOS调用...;分析利用出口参数(1)01H:等待键入一个字符并回显,响应Ctrl_C入口参数:无出口参数:AL=按键ASCII码(2)02H:显示一个字符,响应Ctrl_C(且该功能破坏AL寄存器内容)入口参数:DL=待显字符ASCII码出口参数:无(3)07H:等待键入一个字符且无回显,不响应Ctrl_C入口参数:无出口参数:AL=按键ASCII码(4)08H:等待键入一个字符且无回显,响应Ctrl_C入口参数:无出口参数:AL=按键ASCII码(5)09H:显示字符串,响应Ctrl_C(破坏AL寄存器内容)入口参数:DS:DX=字符串首地址(必须以$结束)出口参数:无(6)0AH:等待键入一串字符串送入用户数据缓冲区入口参数:DS:DX=缓冲区首地址出口参数:存放于缓冲区的字符串缓冲区定义格式:【缓冲区能容纳的字符个数】【实际接收的字符个数】【接收的内容...】13.BIOS调用格式:MOVAH,功能号...;设置入口参数INTn(如10H/16H,代表不同设备驱动程序)...;分析出口参数键盘输入功能INT16H(1)00H:读取键入的一个字符,无回显,响应Ctrl_C入口参数:无出口参数:AL=键入字符的ASCII码(2)01H:查询键盘缓冲区(常用于检查有无键入以停止程序运行)入口参数:无出口参数:Z标志0/1表示有/无键入屏幕功能调用INT10H(大概了解彩色编码)(1)0EH:显示一个字符(等价于DOS的02H)入口参数:AL=待显字符的ASCII码出口参数:无(2)13H:显示字符串入口参数:AL=0~3,BH=显示页号,BL=属性字(当AL=0、1时有效),CX=串长度,DH、DL=字符串显示的起始行/列号,ES:BP=待显示字符串首地址出口参数:无14.宏指令格式:宏指令名称MACRO哑元表;哑元表可省略LOCAL标号名表;此伪指令可省略宏体ENDM对于LOCAL,出现的标号为局部标号,允许与源程序中其他标号/变量重名与子程序的区别:子程序的调用是由CPU完成的,宏指令是在汇编过程中由汇编程序完成的哑元是没有值的符号,调用时宏指令行要有和哑元一一对应的实元表5-8及11章1.总线分为:地址总线、数据总线、控制总线2.有若干片128KBSRAM芯片,如要构成512KB存储器,问:需要(4)片SRAM?如该512KB存储器的起始地址是10000H,最后一个单元的地址是(8FFFF)H。如内存按字节编址,用存储容量为32K×8的存储芯片构成地址为A0000H至EFFFFH的存储空间,则需要多少片?(10)3.接口电路的功能(1)数据缓冲功能(2)联络功能(3)寻址功能(4)数据转换功能(5)中断管理功能4.端口:接口电路中,能与CPU交换信息的寄存器(1)数据端口(必须有)(2)状态端口(3)控制端口5.端口的编址方式有:(1)统一编址:把I/O端口作为存储器的一个单元来看待(2)独立编址(PC机采用,端口地址没有分段的概念)特点:1)I/O端口不占用存储空间2)CPU要有专门的I/O指令访问6.I/O指令CPU可用于交换信息的寄存器:AL、AX、EAX(1)直接寻址I/O指令(端口地址为8位)INAL,PORT(可以为直接地址号,即立即数)OUTPORT,AL(2)DX间址I/O指令(端口地址为16位,必须放在DX中,注意:寻址时不可用[])INAL,DXOUTDX,AL7.微机系统与外设交换信息的方式(1)无条件传送:即假设外设已准备好(2)查询方式:确认具备输入输出条件后才传送RSCAN:MOVDX,200HINAL,DXTESTAL,80HJZRSCANMOVDX,201HINAL,DX(3)中断方式特点:1)在外设没作好数据传送准备时,CPU可执行与传送数据无关的其他指令2)当外设作好传送准备后,主动向CPU请求中断3)若CPU响应这一请求,则暂停正在运行的程序,转入中断服务程序,完成数据传送4)服务完毕后,自动返回原来运行的程序(4)DMA(存储器直接存取)方式特点:1)用硬件实现在外设与内存间直接进行数据交换,而不通过CPU,速度快2)数据传送的速度上限取决于存储器的工作速度8.8254芯片(1)8254内部有三个16位的计数器,CLK信号的下降沿使计数器减1,即计数一次N=f(clk)/f(out)0=65536(2)端口地址的最后两位用于选择芯片中的寄存器A1A0寄存器000#计数器011#计数器102#计数器11控制字寄存器(3)工作方式启动方式:软件启动(GATE=1)、硬件启动(GATE=0→1)1)方式2:分频器/脉冲发生器属于软件启动,输出周期脉冲具有初值自动重装功能:计数值减到1时,OUT输出低电平,经过一个CLK周期,又变为高电平,初值自动重装2)方式3:方波发生器属于软件启动,具有初值自动重装功能①当计数初值为偶数时,每来一个CLK脉冲,计数值减2,减到0时输出端改变极性,初值自动重装,输出1:1方波,脉宽均为N/2个CLK周期②当计数初值为奇数时,正脉冲宽度=T(CLK)*(N+1)/2,负脉冲宽度=T(CLK)*(N-1)/2实际装入的初值以及自动重装的