이 계산을 수행하려면 모든 바이트 값을 word로 변환 한 다음 계산을 수행해야합니다. 결과가 바이트보다 커지기 때문입니다.
따라서 부호있는 및 부호없는 숫자의 경우 바이트 값을 단어 (2 바이트)로 확장하는 것은 상위 바이트의 내용이 규칙에 따라 다르므로 다릅니다. $ 8C $ 00 ($ 008c)
바이트는 경우 : 바이트 값은 부호없는 경우
는 워드 값의 상위 바이트는 두 바이트로 변환되는 예 $의 8C 위해 0으로 설정되어야 값이 한숨을 쉬면 상위 바이트를 바이트 값의 부호 비트 값으로 채워야합니다. 같은 예 : $ 8c는 $ 8f $ ff로 확장되어야합니다. cbw
명령어는 부호있는 변환을합니다. 그것은 다음과 같은 방법으로 모양 코드로
:
; unsigned
mov al, byte [SomeByteVariable]
mov ah, 0
add ax, 1234 ; here we have unsigned word value.
; signed
mov al, byte [SomeByteVariable]
cbw
add ax, 1234 ; here we have signed word value
내가 생각하는 당신은 아니, 거기에'cbw' 줄까? 'cwd'는 dx : ax에서 word를 dword로 부호 확장합니다. –
@FrankKotler - 네, 물론 손가락이 자동으로 입력됩니다. 또한, EAX. 왜,이 학교들은 여전히 16 비트 프로그래밍을 가르치고 있습니까? 2013 년에! – johnfound
감사합니다. 이것은 많은 도움이되었습니다. – user2920941