[工学]6第4章续指令系统之具体指令 微机原理.pptVIP

  • 3
  • 0
  • 约1.2万字
  • 约 52页
  • 2018-02-18 发布于浙江
  • 举报

[工学]6第4章续指令系统之具体指令 微机原理.ppt

[工学]6第4章续指令系统之具体指令 微机原理

西南交通大学电气学院 8086/8088指令系统(续) 2.2逻辑指令 3.串操作指令 例:在数据段内以Block为首地址的100个字节数,试统计其正数和负数的个数,并分别将正数的个数放在DH中,负数的个数放在DL中。编程如下: 转移指令应用举例 MOV DX,0 MOV CX,100 LEA BX,Block AGAIN:MOV AL,[BX] CMP AL,0 JL SMALL JG GREAT NEXT:INC BX DEC CX JNZ AGAIN HLT SMALL:INC DL JMP NEXT GREAT:INC DH JMP NEXT ;DX清零 ;循环次数为100 ;数据段首地址赋给BX ;取第一个数据 ;与0进行比较 ;如果AL0则跳转至SMALL ;如果AL0则跳转至GREAT ;BX减1 ;CX减1 ;若CX不为0则跳转到AGAIN执行 ;停止 ;DL加1 ;无条件跳转到NEXT执行 ;DH加1 ;无条件跳转到NEXT执行 4.2循环控制指令 (1)计数循环指令 格式:LOOP TARGET 功能:每执行一次LOOP指令,CX的内容减1,若CX≠0,则循环转移到目的地址TARGET重复执行其间的程序段,直到CX=0,退出循环,顺序执行下条指令。 (2)结果为零或相等时的循环指令 格式:LOOPZ TARGET/LOOPE TARGET 功能:使CX-1,当CX≠0,且ZF=1时,则循环转移至目的地址TATGET去重复执行其间的程序段。当CX=0,或ZF=0,退出循环,顺序执行本指令的下条指令。 (3)结果不为零或不相等时的循环指令 格式:LOOPNZ TARGET/LOOPNE TARGET 功能:使CX–1,当CX≠0,且ZF=0时,则循环转移到目的地址TARGET去重复执行其间的程序段,若CX=0或ZF=1时,退出循环,顺序执行本指令的下条指令。 循环指令应用举例(1) 例:数据区Block内有100个有符号字节数据,将正(零归正数)、负数分开,并分别送到PLUSD和MINUSD两个缓冲区。 LEA SI,Block LEA DI,PLUSD LEA BX,MINUSD MOV CX,64H BEG:MOV AL,[SI] INC SI TEST AL,80H JNZ MINUS MOV [DI],AL INC DI JMP AGAIN MINUS:MOV [BX],AL INC BX AGAIN:LOOP BEG HLT ;Block首地址给SI ;PLUSD首地址给DI ;MINUSD首地址给BX ;循环次数给CX ;Block第一个数据给AL ;调整SI ;判断AL的符号位 ;负数,跳转到MINUS执行 ;正数,送给DI ;调整DI ;无条件跳转到AGAIN ;负数送给BX ;调整BX ;判断是否继续循环 ;停止执行 循环指令应用举例(2) 例 :找出以ARRAY为首地址的100个字节数组中第一个非零项,并将其置于AL 中,数组中若无非零项,则AL=0。 MOV CX,64H LEA BX,ARRAY MOV SI,0FFFFH ZERO:INC SI CMP BYTE PTR [BX+SI],0 LOOPZ ZERO JCXZ LI MOV AL,[BX+SI] JMP DONE LI:MOV AL,0 DONE:HLT 循环指令应用举例(3) 例: 计算以ARRAY1和ARRAY2为首地址的两个长度都为100个的字节数组对应项之和,并把结果送至首地址为SUM的数据区中,且当两个数组中间对应项的和为0时,停止求和。 MOV AX,0 MOV SI,0FFFFH MOV CX,64H NOZERO:INC SI MOV AL,ARRAY1 [SI] ADD AL,ARRAY2 [SI] MOV SUM [SI],AX LOOPNZ NOZERO HLT 循环指令注意事项 循环指令用在循环的尾部确

文档评论(0)

1亿VIP精品文档

相关文档