Как использовать CLR и JC в сборке?
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
Я получил этот код из книги, но когда я использую код, вы увидите ошибку
(10) недопустимая инструкция: CLR C или неверные параметры.
(13) недопустимая инструкция: CLR AL или неверные параметры.
(21) недопустимая инструкция: CLR C или неверные параметры.
(42) необъявленная метка: JC DISP1
Как я могу исправить эти ошибки?
1 ответ
Почему вы получаете неправильную инструкцию?
Причина, по которой emu8086 выбрасывает недопустимую инструкцию, заключается в том, что CLR
не относится к набору инструкций 8086, фактически это инструкция микроконтроллера 8051. Эта инструкция используется для очистки флага переноса (Установка флага переноса в 0) или очистки содержимого регистра в микроконтроллере 8051. С другой стороны, сброс флага переноса в emu8086 может быть выполнен с CLC
инструкция.
Инструмент для сборки 8051
Инструментом, который вы можете использовать для сборки 8051, является инструмент разработки Keil для микроконтроллера 8051, и вы можете скачать его здесь, следуя этим инструкциям. А для уроков по обучению сборке 8051 вы можете посмотреть эти видео.