어셈블리 언어 중 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
또 궁금한 것은 지령수첩을 살펴보면 비교적 세밀하게 설명할 수 있다
본고에서 서술한 것이 모두의 어셈블리 언어 프로그램 설계에 도움이 되기를 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.