第3章 8086的指令系统.ppt

第3章 8086的指令系统 何谓汇编语言指令? 8086CPU有一条INC的增量指令,它能使指定单元的内容加1。如果现在的操作数是BP寄存器,那么,指令的形式如下: 3-2 8086的寻址方式 操作数在存储器中,而操作数有效地址由BX、BP、SI和DI中的一个指出,若未用前缀指明,默认关系为: 对BX、SI、DI默认在DS段中;对BP默认在SS段中。 例:MOV AX,[DI] 设(DS)=3000H,(DI)=2000H 该指令将32000H和32001H两存储单元中的内容送AX。 操作数在存储器中,操作数的有效地址是一个基址寄存器内容加上一个变址寄存器内容,默认的段寄存器关系同上。 例:MOV AX,[BX+SI] ; [BX+SI]=[BX][SI] 若(DS)=3200H,(BX)=0456H,(SI)=1094H。 3-3 8086的指令集 数据传送指令 算术运算指令 逻辑运算指令 串操作指令 程序控制指令 处理器控制指令 3-3-1 数据传送指令 用来实现:寄←→寄,CPU←→存,CPU←→I/O 之间的数据传送。这类指令又可分四种: MOV DST,SRC; DST←SRC 传送的是B/W取决于指令中涉及的寄存器是8位/16位。 具体来说可实现: 对MOV指令小结: 可执行: 寄←→寄 ;但CS,IP不能作目的寄存器 寄←→存 ;不能:存←存 寄,存←→段寄 ;不能:段寄←段寄 寄←立即数 ;不能:段寄←立即数 存←立即数 几个不能送的解决办法: MOV AL,MEM1 ;通过寄存器AL作桥梁 MOV MEM2,AL ;用来解决存←存 MOV AX,DS ;通过AX解决: MOV ES,AX ;段寄←段寄 MOV AX,DATA ;通过AX解决: MOV DS,AX ;段寄←立即数 堆栈规定设在SS段内,堆栈指针SP始终指向堆栈的顶部,SP的初值规定了所用堆栈区的大小。堆栈的最高地址叫栈底。 二、累加器专用传送( I/O传送指令) 只限于用累加器AL或AX来传送信息。 完成的操作:CPU?I/O端口 3-3-2 算术运算指令 一是参加的操作数必须同为无符号数或同为有符号数。 二是要采用不同标志位来检查无符号数和有符号数的运算结果是否溢出。 一、加法指令 ADC指令在形式上和功能上都有与ADD类似,只是在相加时要把进位标志的现行值CF加到和中。 例: ADC AL,68H ADC AX,CX ADC BX,[DI] 二、减法指令 3-3-3 逻辑运算指令 二、移位指令 3-3-4 程序控制转移指令 8086的程序控制转移指令分: 转移指令 循环控制指令 调用和返回指令 中断指令 ① 段内直接转移 其直接转向的目标地址由指令给出,根据给定的位移量是8位还是16位分两种情况: 又例:JMP [BX+DI] 设指令执行前:(DS)=3000H,(BX)=1300H, (DI)=1200H,(32500H)=2350H(假设) 则指令执行后:(IP)=2350H 在汇编语言中,这种存储器寻址通常写成: JMP WORD PTR[BX+DI] 表示所取得的目标地址是一个字有效地址。 ① 根据单个标志位设置的条件转移指令: 二、循环控制指令 这类指令用在一个循环程序的头部或尾部,以确定是否要继 续循环。循环次数通常置于CX中。 这类指令的目标地址在控制指令为中心的-128~+127字节的 范围之内。 循环控制指令不影响标志位。 三、子程序调用和返回指令 四、中断指令和中断返回指令 中断指令INT n 式中n=0~255,叫中断类型号。指令的操作步骤为: 3-3-5 处理器控制指令 例: CMP AL,0AH ;AL与0AH比较 CMP CX,SI ;CX与SI比较 CMP DI,[BX+03] ;DI与存储器比较 比较指令CMP(操作数格式同SUB) CMP也是执行两个操作数相减,但不送回结

文档评论(0)

1亿VIP精品文档

相关文档