어셈블리 언어 중 cmp 명령 사용법 노트 및 총결산

1717 단어
본고의 실례는 어셈블리 언어의 cmp 명령 사용법을 설명하였다.여러분에게 참고하도록 공유하겠습니다. 구체적으로는 다음과 같습니다.
cmp는 비교 명령이고 cmp의 기능은 감법 명령에 해당하며 결과를 저장하지 않습니다.cmp 명령이 실행되면 로고 레지스터에 영향을 줍니다.기타 관련 지령은 영향을 받은 표지 레지스터를 식별하여 비교 결과를 알 수 있다.
cmp 명령 형식: cmp 조작 대상 1, 조작 대상 2
기능: 계산 조작 대상 1 - 조작 대상 2이지만 결과를 저장하지 않고 계산 결과에 따라 로고 레지스터를 설정합니다.예를 들어 cmpax,ax는ax-ax의 연산을 하는데 결과는 0이지만ax에 저장되지 않으며flag 관련자에게만 영향을 줍니다.
명령 실행 후:zf=1,pf=1,sf=0,cf=0,of=0;
다음 명령:

  mov ax,8

  mov bx,3

  mov ax,bx


실행 후: (ax) = 8,zf = 0,pf = 1,sf = 0,cf = 0,of = 0
ax = bx이면 ax - bx = 0이므로 zf = 1
하면, 만약, 만약...bx는 ax - bx!=0, 그래서:zf=0
ax < bx 의 경우 ax - bx에서 오류가 발생하므로: cf = 1
만약 ax>=bx라면 ax-bx는 자리를 빌릴 필요가 없기 때문에:cf=0
만약ax>bx라면ax-bx는 자리를 빌릴 필요도 없고, 결과는 0도 아니기 때문에:cf=0 및zf=0
만약ax<=bx라면ax-bx는 자리를 빌릴 수 있고 결과는 0일 수 있기 때문에:cf=1 또는zf=1
비교 결과 조건부 전환 명령 검사
je는 zf=1을 옮기는 것과 같다
jne이 같지 않으면 zf=0 이동
jb보다 낮으면 cf=1
jnb가 낮지 않으면 cf=0 이동
ja가 높으면 cf=0 이동하고zf=0
jna가 높지 않으면 cf=1 또는zf=1
e : equal
ne : not equal
b: below
nb : not below
a : above
na : not above
프로그래밍: 데이터 세그먼트에서 8보다 작은 바이트의 개수를 통계하고ax로 통계 결과를 저장합니다

    mov ax,data 

    mov ds,ax

    mov ax,0                ; 

    mov bx,0                ;ds:bx 

    mov cx,8

  s : cmp byte ptr [bx] , 8       ; 8 

     jnb next                 ; 8 next, 

     inc ax                   ; 8 1

next:inc bx 

    loop s


프로그램 실행: ax = 2
또 궁금한 것은 지령수첩을 살펴보면 비교적 세밀하게 설명할 수 있다
본고에서 서술한 것이 모두의 어셈블리 언어 프로그램 설계에 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기