2013-05-04 2 views
2

제가 알고 싶은 것은 분명히 주제에 대해 말하고 있습니다. 8 비트 레지스터를 16 비트 레지스터로 옮기는 데 문제가 있습니다. 제가하려고하는 것은 10보다 더 낮아지는 10 월까지 숫자를 영구적으로 나누는 것입니다. 그리고 각 시간 내에, 아 부분의 나머지 부분을 밖으로 이동하려고합니다. 48 개를 추가하십시오. 그때, 나는 Ascii 코드를 가질 수 있었고, 화면에있는 숫자를 보여 주려고했습니다. 여기에 코드입니다 :조립, 8 비트 레지스터를 16 비트 레지스터로 이동하십시오. 어떻게?

Num1 DW 255 
DIVISION : 
     CMP NUM1,10 
      Jl DIVEND 

     MOV AX,10 
     DIV NUM1 
     MOV NUM1,AL ;* 


     ADD AH,48 
     MOV DL,AH; 
     MOV AH,02H 
     INT 21H 

    JMP DIVISION 

하지만, 메신저를 조립하려고 할 때, 그것은 말한다 피연산자 유형은 *로 표시된 라인에 일치하지 않습니다. 메신저를 사용하여 터보 어셈블러 V4.1 ... 어떻게해야합니까?

+0

Turbo Assembler에서 많이 기억할 수는 없지만'MOV BYTE NUM1, AL'을 시도 했습니까? –

+1

MOV NUM1, AL이 AL의 내용을 NUM1 (으)로 이동하고 있음을 이해하지 못합니까? 이것은 일어날 수 없다? –

+0

@PreetSangha 맞습니다. 나는 문법을 완전히 보았습니다. :) –

답변

0

그 뜻 이세요?

mov bx, Offset Num1 
mov [bx], al 

오류는 사용자가 단어를 선언했지만 바이트로 처리하기 때문에 발생합니다. 당신이 Num1 DB를 만든다면 그것은 또한 작동합니다.

는 TASM 4.1 제목에 더 일반적인 질문에 대해서는

+0

덕분에 효과가있었습니다 ... – user1547062

2

와 테스트 : 당신이 서명 값 및 서명 값 movsx (확장 이동 기호)에 대해 (제로 확장 이동) movzx를 사용합니다.

관련 문제