어셈블리 8086의 빼기가 잘못된 플래그를 설정합니다.

user1812076

간단한 수학 계산을하려고합니다. 내 코드는 다음과 같습니다.

mov al, 128
sub al, -128

하위 명령어에 의해 설정된 플래그를 알아야합니다. 내 계산은 다음과 같습니다. 아이디어로 시작 sub과 동일합니다 +(- your number). mov, al 128 에서 시작 하면 다음과 같습니다.

여기 있습니다 AL:

128 = 0x80 = 1000 0000b

두 번째 단계 -128는 128의 두 번째 보수 인 을 얻는 것입니다. 즉,

 128 = 1000 0000b
-128 = 0111 1111b (1st complement) + 1 = 1000 0000b

그래서 ... 우리는 같은 수를 얻었습니다. 이제 우리는 그것들을 더해야합니다. 왜냐하면 그것이 실제 뺄셈 대신에 음수를 더하는 것이기 때문입니다.

최종 결과는 다음과 같습니다.

 1000 0000b +
 1000 0000b
 ----------
10000 0000b

이는 다음 플래그가 설정되었음을 나타냅니다. CF (캐리 있음), ZF (AL의 0) 및 PF (d0에서 d3까지 1의 짝수).

동일한 코드를 실행하면 다시 :

mov al, 128
sub al, -128

그것은 단지 설정합니다 ZFPF 하지만, 어떤 CF를 . 그 이유는 무엇입니까? 내가 무엇을 잘못하고 있지 ?

Sep Roland

sub가 + (-your number)와 같다는 생각.

CPU에 이것은 사실이 아닙니다. 첫 번째 숫자와 두 번째 숫자는 같습니다. 인간으로서 두 번째 숫자가 음수라는 것을 이해한다는 사실은 프로세서에 영향을 미치지 않습니다. 2 개의 동일한 숫자를 빼므로 빌릴 필요가 없습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

어셈블리 8086의 빼기가 잘못된 플래그를 설정합니다.

분류에서Dev

wcf 프로젝트의 스트림이 MVC의 잘못된 어셈블리를 가리 킵니다.

분류에서Dev

빼기 결과가 잘못된 이유는 무엇입니까? 어셈블리 x86

분류에서Dev

Visual Studio Test Runner의 어셈블리가 포함 된 디렉터리가 잘못되었습니다.

분류에서Dev

어셈블리가 잘못된 ASCII 문자를 인쇄 함

분류에서Dev

잘못된 스택 포인터로 인해 어셈블리 페이지 오류 처리기를 호출 할 수 없습니다.

분류에서Dev

안녕하세요,이 어셈블리 코드를 수정하여 5-10의 합계를 인쇄 할 수 있습니다. 현재 1에서 10까지 인쇄합니다. 어셈블리 프로그래머가 나를 도울 수 있습니까?

분류에서Dev

ls -s가 잘못된 블록 크기를 사용합니다.

분류에서Dev

UISearchController가 잘못된 테이블보기를 사용합니다.

분류에서Dev

Roslyn의 Compilation 개체를 사용하여 참조 된 어셈블리에서 어셈블리 수준 특성을 가져 오는 방법이 있습니까?

분류에서Dev

Set-Authenticode가 지정된 어셈블리에 잘못 서명 한 것으로 보입니다.

분류에서Dev

emsdk가 웹 어셈블리를 설치하지 못함

분류에서Dev

Drupal의 글로벌 언어가 잘못된 언어를 반환합니다.

분류에서Dev

x86-64 리눅스 어셈블리. EFAULT 때문에 argv에 쓰기를 사용하면 작동하지 않습니까? "잘못된 주소"

분류에서Dev

제공된 상수-어셈블리를 사용하여 "칩에서 값 가져 오기"와 정의

분류에서Dev

리눅스. wmctrl은 gedit의 잘못된 크기를 반환합니다.

분류에서Dev

ForeignKey의 Django filter ()가 잘못된 쿼리 세트를 반환합니다.

분류에서Dev

Rebus-Rabbitmq는 지정된 네임 스페이스 / 어셈블리의 모든 개체를 매핑합니다.

분류에서Dev

yarn-daemon.sh가 HDP의 잘못된 로그 디렉토리에 기록합니다.

분류에서Dev

(역방향) c, 어셈블리의 지정된 위치로 돌아 가기

분류에서Dev

SSIS의 Oracle 쿼리가 잘못된 데이터 형식을 정의합니다.

분류에서Dev

watcom 인라인 어셈블리에 "잘못된 레지스터 사용"오류가 발생했습니다.

분류에서Dev

참조 된 어셈블리가 콘솔 응용 프로그램으로 빌드 될 때 MVC View get의 컴파일 오류 (CS0246). 클래스 라이브러리로 빌드되면 잘 작동합니다.

분류에서Dev

어셈블리 8086의 분기 테이블

분류에서Dev

잘못된 프래그먼트가 onLongPress 리스너를받습니다.

분류에서Dev

NASM 어셈블리 16 비트 "오피 코드와 피연산자의 잘못된 조합"

분류에서Dev

요소가 클래스에 의해 정의 된 경우 글꼴 크기가 잘못 작동합니다.

분류에서Dev

LESS는 슬래시가있는 그리드 템플릿 선언에 대해 잘못된 코드를 생성합니다.

분류에서Dev

어셈블리의 정의되지 않은 상태 플래그 값

Related 관련 기사

  1. 1

    어셈블리 8086의 빼기가 잘못된 플래그를 설정합니다.

  2. 2

    wcf 프로젝트의 스트림이 MVC의 잘못된 어셈블리를 가리 킵니다.

  3. 3

    빼기 결과가 잘못된 이유는 무엇입니까? 어셈블리 x86

  4. 4

    Visual Studio Test Runner의 어셈블리가 포함 된 디렉터리가 잘못되었습니다.

  5. 5

    어셈블리가 잘못된 ASCII 문자를 인쇄 함

  6. 6

    잘못된 스택 포인터로 인해 어셈블리 페이지 오류 처리기를 호출 할 수 없습니다.

  7. 7

    안녕하세요,이 어셈블리 코드를 수정하여 5-10의 합계를 인쇄 할 수 있습니다. 현재 1에서 10까지 인쇄합니다. 어셈블리 프로그래머가 나를 도울 수 있습니까?

  8. 8

    ls -s가 잘못된 블록 크기를 사용합니다.

  9. 9

    UISearchController가 잘못된 테이블보기를 사용합니다.

  10. 10

    Roslyn의 Compilation 개체를 사용하여 참조 된 어셈블리에서 어셈블리 수준 특성을 가져 오는 방법이 있습니까?

  11. 11

    Set-Authenticode가 지정된 어셈블리에 잘못 서명 한 것으로 보입니다.

  12. 12

    emsdk가 웹 어셈블리를 설치하지 못함

  13. 13

    Drupal의 글로벌 언어가 잘못된 언어를 반환합니다.

  14. 14

    x86-64 리눅스 어셈블리. EFAULT 때문에 argv에 쓰기를 사용하면 작동하지 않습니까? "잘못된 주소"

  15. 15

    제공된 상수-어셈블리를 사용하여 "칩에서 값 가져 오기"와 정의

  16. 16

    리눅스. wmctrl은 gedit의 잘못된 크기를 반환합니다.

  17. 17

    ForeignKey의 Django filter ()가 잘못된 쿼리 세트를 반환합니다.

  18. 18

    Rebus-Rabbitmq는 지정된 네임 스페이스 / 어셈블리의 모든 개체를 매핑합니다.

  19. 19

    yarn-daemon.sh가 HDP의 잘못된 로그 디렉토리에 기록합니다.

  20. 20

    (역방향) c, 어셈블리의 지정된 위치로 돌아 가기

  21. 21

    SSIS의 Oracle 쿼리가 잘못된 데이터 형식을 정의합니다.

  22. 22

    watcom 인라인 어셈블리에 "잘못된 레지스터 사용"오류가 발생했습니다.

  23. 23

    참조 된 어셈블리가 콘솔 응용 프로그램으로 빌드 될 때 MVC View get의 컴파일 오류 (CS0246). 클래스 라이브러리로 빌드되면 잘 작동합니다.

  24. 24

    어셈블리 8086의 분기 테이블

  25. 25

    잘못된 프래그먼트가 onLongPress 리스너를받습니다.

  26. 26

    NASM 어셈블리 16 비트 "오피 코드와 피연산자의 잘못된 조합"

  27. 27

    요소가 클래스에 의해 정의 된 경우 글꼴 크기가 잘못 작동합니다.

  28. 28

    LESS는 슬래시가있는 그리드 템플릿 선언에 대해 잘못된 코드를 생성합니다.

  29. 29

    어셈블리의 정의되지 않은 상태 플래그 값

뜨겁다태그

보관