首页 > 其他 > 详细

串指令

时间:2020-05-27 21:12:57      阅读:46      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

 

技术分享图片

 

 

  REP前缀是当ecx寄存器>0时,重复。 而REPE前缀是零标志置位(啥叫零标志位置位,通俗的讲就是零标志位(zf=1), 并且ecx>0时重复。

技术分享图片

 

 

 标志位:

CF:进位标志位。在无符号运算时,记录了运算结果的最高有效位向更高位的进位值或从更高位借位,产生进位或借位时CF=1,否则CF=0;

PF:奇偶标志位。相关指令执行后结果所有bit中1的个数为偶数,那么PF=1,1的个数为奇数则PF=0;

AF:辅助进位标志位。运算过程中看最后四位,不论长度为多少。最后四位向前有进位或者借位,AF=1,否则AF=0;

ZF:零标志位。相关指令执行后结果为0那么ZF=1,结果不为0则ZF=0;

SF:符号标志位。相关指令执行后结果为负那么SF=1,结果非负数则SF=0;

TF:调试标志位。当TF=1时,处理器每次只执行一条指令,即单步执行;

IF:中断允许标志位。它用来控制8086是否允许接收外部中断请求。若IF=1,8086能响应外部中断,反之则屏蔽外部中断;

DF:方向标志位。在串处理指令中,每次操作后,如果DF=0,si、di递增,如果DF=1,si、di递减;注意此处DF的值是由程序员进行设定的 cld命令是将DF设置为0,std命令是将DF设置为1;

OF:溢出标志位。记录了有符号运算的结果是否发生了溢出,如果发生溢出OF=1,如果没有OF=0;

转载自:https://blog.csdn.net/weixin_41890599/article/details/99866410

DATA         SEGMENT
            BUF1     DB   I am a student
            BUF2      DB   I am a studant
            RES       DB   3  DUP (?)
            NUMBER      EQU  14
DATA         ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATA,SS:STACKS, ES:DATA
START:
    MOV AX,DATA
    MOV DS,AX
    
       MOV ES, AX ;切记
       LEA BX, RES
       LEA SI, BUF1
       LEA DI, BUF2
       MOV CX, NUMBER
       CLD  ;cld每次cx - 1, std每次cx + 1
       REPE CMPSB
       JNZ UNSAME
       MOV BYTE PTR[BX], 0 ;全部相同
       JMP OVER ; 结束
UNSAME:
    MOV AL, 0FFH
    MOV [BX], AL
    INC BX
    DEC SI ;因为每次都是先判断再减少,所以最后一次判断失败后,si指针依旧在上一个位置,
    ;需要多减少一次
    MOV [BX], SI
OVER:

    MOV AH,4CH
    INT 21H


    MOV AH,4CH
    INT 21H
CODES ENDS
    END START

 

串指令

原文:https://www.cnblogs.com/1-0001/p/12976494.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!