找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4636|回復: 1
打印 上一主題 下一主題
收起左側(cè)

匯編程序錯誤(106) wrong parameters: MOV DX, INI_A

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:627219 發(fā)表于 2019-12-5 10:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

;定義一個輸出專用的宏,PORT表示端口地址,DATA表示要輸出的數(shù)據(jù)(8位)
OUT_PORT MACRO  PORT,DATA  
    MOV  DX, PORT
    MOV  AL, DATA
    OUT  DX, AL
ENDM
;====================================================================
;中斷向量設置,X為中斷向量,Y為中斷子程序名
SET_INT  MACRO  X,Y
    PUSH  DS
    MOV AX,0
    MOV DS,AX
    MOV DI,X*4
    MOV AX,OFFSET Y
    MOV [DI],AX
    MOV AX,SEG Y
    MOV [DI+2],AX
    POP DS
ENDM
; INI_A為偶數(shù)口地址,ICW1,ICW2,ICW4為對于要寫入的命令,適合與單片8259初始化
INIT_8259  MACRO  INI_A,ICW1,ICW2,ICW4
    OUT_PORT INI_A,ICW1
    OUT_PORT INI_A+2,ICW2
    OUT_PORT INI_A+2,ICW4
ENDM
;====================================================================
;8253初始化,INT8253C為命令口地址,X為命令內(nèi)容,A8253為計數(shù)器N的端口,Y為計數(shù)初值
INIT_8253 MACRO INT8253C,X,A8253,Y
    OUT_PORT INT8253C,X                ;命令口
    MOV AX,Y
    MOV DX,A8253
    OUT DX,AL
    MOV AL,AH
    OUT DX,AL
ENDM
;====================================================================
;X用于表示當前計數(shù)單元,NUM用于當前計時最大值(60,24),Y表示下一計數(shù)單元,Z為轉(zhuǎn)換的LED編碼存儲單元
INT_PRO  MACRO  X,NUM,Y,Z
    LOCAL AA
    XOR BX,BX
    MOV AX,BX    ;   
    MOV AL,X
    CMP AL,NUM                      ;比較秒計數(shù)是否到60
    JNE AA                         ;不是,則轉(zhuǎn)AA
    INC Y                          ;是,則分鐘加一
    MOV AL,0                       ;令秒=0
    MOV X,AL
AA:
    MOV BL,10
    DIV BL
    MOV BL,AL
    MOV AL,LED[BX]                 ;轉(zhuǎn)換秒的高位
    MOV Z,AL
    MOV BL,AH
    MOV AL,LED[BX]                 ;轉(zhuǎn)換秒的低位
    MOV Z+1,AL
ENDM
;====================================================================

DATA SEGMENT
    ;4-16譯碼器輸出對應端口
    IO1    EQU  10H
    IO2    EQU  20H                      ;8259端口
    IO3    EQU  30H                      ;8255 A口地址
    IO4    EQU  40H                      ;8253 計數(shù)器0端口地址
    IO5    EQU  50H
    IO6    EQU  60H
    IO7    EQU  70H
                                        ;....
    IOA    EQU  0A0H  
    TIMERS EQU  1000                    ;計數(shù)初值
    LED   DB  3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H         ;0--F對應編碼,共陰極
    ;LED1  DB  0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,90h,90h,90h,90h,90h
    PORTA  EQU  IO3                    ;8255 A口地址
    PORTB  EQU  IO3+2
    PORTC  EQU  IO3+4
    PORT_CON EQU IO3+6
    T_HOUR  DB  0                       ;用于小時計數(shù)
    T_MIN   DB  0                       ;用于分計數(shù)
    T_SEC   DB  0                       ;用于秒計數(shù)
    TEMP    DB  0
    HOUR    DB  0,0,40H               ;用于存放LED顯示編碼/小時
    MINTU   DB  0,0,40H
    SEC     DB  0,0
DATA ENDS

STACK SEGMENT PARA STACK 'STACK'         ;堆棧段
      DW  1024 DUP (?)
STACK ENDS

CODE    SEGMENT PUBLIC 'CODE'
        ASSUME CS:CODE,DS:DATA,SS:STACK

START:
    MOV AX, DATA
    MOV DS, AX                 ;數(shù)據(jù)段設置
    MOV AX,STACK
    MOV SS,AX                  ;堆棧段設置


    CLI                       ;關中斷
    ;設置中斷向量
    SET_INT 80H,INT_0         ;接IR0,若要接其他引腳,注意修改中斷向量   
    ;初始化8259,按次序?qū)慖CW1,ICW2,ICW4
    INIT_8259 IO2,13H,80H,03H      ;ICW1,邊沿觸發(fā),單片,需要ICW4,ICW2=80H,ICW4,自動結束     

    OUT_PORT  IO3+6,80H            ;8255初始化
    INIT_8253 IO4+6,36H,IO4,TIMERS   ;8253初始化,方式3,計數(shù)器0
    INIT_8253 IO4+6,76H,IO4+2,TIMERS  ;8253初始化,方式3,計數(shù)器1

    OUT_PORT IO2+2,00H             ;OCW1,全開放      
    STI                           ;開中斷
L:
    CALL DISPLAY                  ;
    JMP L   

    NOP   

INT_0  PROC                       ;中斷服務程序
    CLI   
    PUSH AX
    INC T_SEC
    INT_PRO T_SEC,60,T_MIN,SEC      ;秒
    INT_PRO T_MIN,60,T_HOUR,MINTU   ;分
    INT_PRO T_HOUR,24,TEMP,HOUR     ;小時
    POP AX
    STI   
    IRET
INT_0 ENDP        

DISPLAY  PROC  NEAR               ;LED顯示   
    MOV CX,7F08H                  ;CH用于控制,CL用于循環(huán)
    LEA DI,HOUR
DISP_L:   
    OUT_PORT  PORTA,[DI]
    OUT_PORT  PORTB,CH            ;CH決定第幾位顯示
    CALL DELAY
    OUT_PORT  PORTB,0FFH   
    INC  DI
    ROR  CH,1
    DEC  CL
    JNZ  DISP_L
    RET
DISPLAY  ENDP

DELAY PROC NEAR
    PUSH CX   
    MOV CX,100                  ;延時,根據(jù)需要調(diào)整
LP2:
    LOOP LP2
    POP  CX   
    RET
DELAY ENDP

CODE    ENDS
        END START


放大的地方報錯,是為什么哦?

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:123289 發(fā)表于 2019-12-5 18:49 | 只看該作者
錯誤提示長什么樣子,截個電腦圖。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表