第3b章 16位和32位微处理器的指令系统.ppt
文本预览下载声明
* 内存0:0000H~0:03FFH区域中,构成中断向量表,存放中断处理程序入口地址。每4个单元对应1个中断源。关系如下表: 中断处理程序入口地址的地址 类型 00000H~00001H 类型0(IP) 00002H~00003H 类型0(CS) 00004H~00005H 类型1(IP) 00006H~00007H 类型1(CS) 00008H~00009H 类型2(IP) 0000AH~0000BH 类型2(CS) 0000CH~0000DH 类型3(IP) 0000EH~0000FH 类型3(CS) 00010H~00011H 类型4(IP) 00012H~00013H 类型4(CS) …… …… 003FCH~003FDH 类型255(IP) 003FEH~003FFH 类型255(CS) * 条件转移指令应用 例:比较二个数是否相等 如相等做动作1 否则做动作2 …… CMP AX,BX JE action_1 Action_2: …… …… action_1 : …… 或 …… CMP AX,BX JNZ action_2 action_1: …… action_2: …… * 例: X,Y放在X,Y单元里,(带符号数判断) 先判X50?,YES→转too_high, NO→ 做X-Y , 溢出→转overflow ,否则求|X-Y|→result MOV AX,X CMP AX,50 JG too_high ;大于转too_high SUB AX,Y JO overflow ;溢出转overflow JNS nonneg ; S=0转nonneg NEG AX nonneg: MOV result ,AX too_high: …… overflow: …… * 例:在M中有一个首地址为array的N字数组, 要求测试其中正数、0及负数的个数. (带符号数判断) 正数个数放在: (DI)中, 0的个数放在: (SI)中, 负数的个数放在: N-(DI)-(SI)送(AX) 如果没有负数转skip, 如果有负数转neg_val 程序: mov cx,N ; N字数组 mov bx,0 mov di,bx mov si,bx again: cmp word ptr arrary[bx],0 jle less_or_ag inc di ;正数个数 jmp short neat less_or_ag: jl neat inc si ; 0的个数 neat: add bx,2 dec cx jnz again mov ax,N sub ax,di sub ax,si jz skip;没有负数 jmp near ptr neg_val;有负数 skip: …… neg_val: …… * 2、 过程( 子程序 )调用指令 子程序—程序中具有独立功能的部分编写成独立程序模块。 子程序(过程)定义格式: 符号名 PROC 类型 …… 符号名 ENDP 子程序调用和返回指令: CALL RET(RETURN) 过程有两种类型: 按过程与调用语句间的位置,过程有两种类型。 NEAR类型:调用指令与过程在同一个段中 FAR类型:调用指令与过程不在同一个段中 CALL指令和RET指令都不影响条件码。 * (1)、 CALL( Call a procedure)调用 CALL调用指令 调用地址由指令给出 CALL调用指令有4种: 段内直接调用 段间直接调用 段内间接调用 段间间接调用 * ? 段内直接调用 格式:CALL DST ;(SP)←(SP)-2, ((SP)+1,(SP))←(IP) ; (IP) ← (IP)+D16 DST—给出转向地址(子程序的入口地址)。
显示全部