2017-12-12 16 views
-1
 ORG 0100H 
INIT:    
     MOV AL,99H 
     OUT 06,AL 
     MOV AL,0 
     OUT 02,AL 
     MOV TEMP,01DH 
LOOP: CALL ADC 
     CALL HEX2ASC 
     CLR C 
    SUB AL,TEMP 
    JC TEMPLO 
    CLR AL 
    JMP TEMP1 
TEMPLO: MOV AL,20H 
TEMP1: OUT 02,AL 
     JMP LOOP 
ADC: IN AL,00 
     MOV BL,AL 
    IN AL,00 
    CLR C 
    SUB AL,BL 
    JNZ ADC 
    MOV AL,BL 
    RET 
HEX2ASC: PUSH AX 
     MOV CL,4 
    ROR AL,CL 
    CALL DISPLAY 
    POP AX 
    CALL DISPLAY 
    MOV CX,2 
BACKSP: PUSH CX 
     MOV AL,08 
    CALL FPUTC 
    POP CX 
    DEC CX 
    JNZ BACKSP 
    RET 
DISPLAY: AND AL,0FH 
     CMP AL,0AH 
    JC DISP1 
    ADD AL,7 
DISP1 ADD AL,30H 
     CALL FPUTC 
    RET 
FPUTC: PUSHF 
     PUSH DX 
    PUSH CX 
    PUSH AX 
     XOR CX,CX 
    MOV ES,CX 
    MOV BYTE PTR ES:[01E5],5E 
    MOV AH,24 
    MOV ES:[01E5+1],AX 
    MOV AL,06 
    INT 06 
    POP AX 
    POP CX 
    POP DX 
    POPF 
    RET A 
TEMP: DS 1 

私は、コードを使用するときに、私は、このコード形式に本を得たが、私はアセンブリでCLRとJCを使用する方法は? CLRのCまたは間違ったパラメータ:

(10)不当命令をエラー表示します。

(13)不正な命令:CLR ALまたは間違ったパラメータ。

(21)不正な命令:CLR Cまたは間違ったパラメータ。

(42)宣言されていないラベル:JC DISP1

私はこれらのエラーを修正するにはどうすればよいですか?

+1

'CLR C'は8065命令のように見えますが、8086命令ではありません。どの本を 'CLR C 'から入手しましたか? –

+1

あなたの 'DISP1'ラベルにコロンがありません – Jester

+0

アプリケーションボード実験マニュアルflt-8086本 –

答えて

0

は、不正な命令エラーをなぜ受け取りますか?

emu8086が指示CLRが実際に8051マイクロコントローラのその命令をセット8086命令に属していないため、不正命令があるスローな理由。この命令は、キャリーフラグ(キャリーフラグを0に設定)をクリアするか、または8051マイクロコントローラのレジスタの内容をクリアするために使用されます。一方、emu8086のキャリフラグをクリアするには、CLC命令で行うことができます。あなたは8051アセンブリのために使用することができます

ツール8051のための議会

ツールは、8051マイクロコントローラためKeil社の開発ツールであり、あなたがthese指示に従ってhereから同じことをダウンロードすることができます。また、8051アセンブリの学習に関するチュートリアルでは、theseビデオを見ることができます。

+0

@PeterCordesこれには編集が必要ですか? :) – Ahtisham

関連する問題