- 9
- 0
- 约5.24千字
- 约 39页
- 2017-07-20 发布于湖北
- 举报
NEPA: JE NEPB ;X=0,转NEPB MOV YY,1 ;X>0,YY←1 JMP STOP NEPB: MOV YY,0 ;X=0,YY←0 STOP: MOV AH,4CH ;返回DOS INT 21H CODE ENDS END START 能否缺省?为什么? AL←N AL≥0? AL=AL+30H S 存AL值 END N Y AL=AL+07H AL≤9? AL≤15? AL=0FFH Y N N Y 例3.23检查N单元的数据是否为1位16进制数,是则将其转换为ASCII码,否则置为0FFH next1 next2 done 例3.24从键盘接受一个字符送入AL, 根据AL的数值进行跳转 AL←字符 AL ≤ 30H? BX=Li首址 S 转移到Li执行 END Y N AL逻辑左移1位 AL ≥39H ? Y N AL=AL-30H AH=0 L9 L9 L1 L1 L0 L0 TAB +1 +2 +3 +17 +18 设由键盘输入 ‘0’~‘9’中的任一个到AL,则AL的内容就为‘0’~‘9’中的任一个字符的ASCII值。然后根据ASCII值转到L0、L1、……、L9程序段中。 * * 3.7 分支程序的设计 分支程序就是根据条件的不同完成不同功能的程序。 编写分支程序要用到转移指令。 关键问题是:转移指令? (1) 段内直接转移指令 格式:JMP SHORT OPRD;OPRD≡{标号} 功能:将程序无条件地转移到标号OPRD为起点的程序段执行。 操作:IP←IP+D8;D8为8位偏移量的补码 转移范围:IP-128~IP+127(256字节) 3.7.1 无条件转移指令 ① 段内直接短转移指令 例: : JMP SHORT NEXT; : NEXT:MOV AL,05H; 操作码 08H 操作码 CS:0100H 05H 0101H 0102H 010AH 010BH JMP SHORT NEXT 8位位移量 MOV AL,05H 由计算机根据转移的相对位置计算得到。 说明:转移指令可以从现行指令地址(IP)向低地址转移——D8为负数;也可以向高地址转移——D8为正数。 注意:JMP SHORT PTR CCC;错误指令 ? 格式:JMP NEAR PTR OPRD; 其中,OPRD≡{标号} 功能:将程序无条件地转移到标号OPRD为起点的程序段执行。 操作:IP←IP+D16;D16为16位偏移量的补码 转移范围:IP-32768~IP+32767(64K一个段) ② 段内直接近转移指令 说明:直接转移指令中的目标地址OPRD直接使用要转向指令的标号,属性操作符NEAR PTR在指令中可省略,直接写成 : 其中, 标号的偏移地址=当前转移指令的下一条指令的偏移地址+位移量 位移量是是16位的,可以由汇编程序在汇编过程中,根据标号地址与JMP指令所在地址进行计算得到。 JMP 标号 ; IP←标号的偏移地址 例: : JMP NEAR PTR NEXT; : NEXT:MOV AL,05H; 由计算机根据转移的相对位置计算得到。 操作码 07H 操作码 CS:0100H 05H 0101H 0102H 010AH 010BH JMP NEXT 16位位移量 MOV AL,05H 00H 格式:JMP OPRD; OPRD≡{R,M} 操作:IP←[EA];EA为OPRD确定的有效地址。 例如:JMP BX; (IP)←((BX))或[BX] 说明:有效地址EA由OPRD的寻址方式确定。若是寄存器寻址,则寄存器内存放的就是EA;若是MEM寻址,那么EA就是寻址单元的内容。 (2) 段内间接转移指令 例3.19 JMP WORD PTR [BX+20H] 设DS=3000H,BX=1000H,则存放转移有效地址的字单元的物理地址: PA=30000H+1000H+20H=31020H 若指令执行前,CS=0100H,IP=2110H,(31020H)=C6H,(31021H)=40H,则指令执行后,IP=40C6H,CS值不变。 因此,程序就转移到0100H:40C6H处继续执行,如下所示 CS : IP … 0100H:2110H JMP WORD PTR [BX+
原创力文档

文档评论(0)