欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7074|回復: 2
收起左側

8259A的proteus仿真實例 帶程序源碼

[復制鏈接]
ID:137190 發表于 2016-9-4 22:44 | 顯示全部樓層 |閱讀模式
0.png

程序源碼如下:
  1. .MODEL SMALL
  2. .8086
  3. .stack
  4. .data
  5. LED byte 00000001B
  6. .code
  7. start:
  8.     cli
  9.     mov ax,0        ; init interrupt vector TABLE
  10.     mov ds,ax
  11.     mov si,0
  12.     mov cx,80H
  13.     mov ax,offset intx
  14.     mov bx,seg intx
  15. l:  mov [si],ax
  16.     mov [si+2],bx
  17.     add si,4
  18.     loop l
  19.     mov si,60h*4      ; init INT1 interrupt vector
  20.     mov ax,offset int0
  21.     mov [si],ax
  22.     mov ax,seg int0
  23.     mov [si+2],ax
  24.     mov ax,@data
  25.     mov ds,ax
  26.     mov dx,206h    ; init 8255
  27.     mov al,10000000b
  28.     out dx,al
  29.     JMP $+2
  30.     mov al,LED
  31.     mov dx,200h
  32.     out dx,al
  33.     JMP $+2
  34.     mov al,00010011b  ;  init  8259
  35.     mov dx,210h
  36.     out dx,al         ; ICW1
  37.     JMP $+2
  38.     mov al,60h
  39.     mov dx,212h
  40.     out dx,al         ; ICW2
  41.     JMP $+2
  42.     mov ax,00000001h
  43.     out dx,al         ; ICW4
  44.     JMP $+2
  45.     mov ax,0
  46.     out dx,al         ; OCW1
  47.     JMP $+2
  48.     sti
  49.     jmp $
  50. int0  proc
  51.     rol LED, 1
  52.     mov al, LED
  53.     MOV dx, 200h
  54.     out dx, al
  55.     jmp $+2
  56.     mov al,20h
  57.     mov dx,210h
  58.     out dx,al
  59.     jmp $+2
  60.     iret
  61. int0 endp
  62. intx proc
  63.     ror LED, 1
  64.     mov al, LED
  65.     MOV dx, 200h
  66.     out dx, al
  67.     jmp $+2
  68.     mov al,20h
  69.     mov dx,210h
  70.     out dx,al
  71.     jmp $+2
  72.     iret
  73. intx endp
  74. END start
復制代碼

對于8259A的仿真我倒是做成了,可是成功的很郁悶,其實大家很多做的就差最后一點了。
1.首先原來軟件的8259改成8259A(加幾個字符)大家應該都知道,我不說這個了。
2.經過反復的實驗,我發現雖然仿真的時候看到8259A在第二個INTA返回給8086的中斷號是對的,但是實際上到了8086那里這個中斷號就變了,而且好像變成隨機的了。因此,如果你只有一個中斷,那你就把整個中斷向量表的所有表項全部填上該中斷處理程序的入口地址,你就會發現,當中斷來的時候,中斷處理程序被執行了,當然前提是你的程序沒有錯誤。
我把我做的給大家做示范吧,不過大家注意修改一下“Code Generation Tool “ 中的設置
0.png

8259A仿真實例所有資料下載:
base8259.rar (39.25 KB, 下載次數: 113)

回復

使用道具 舉報

ID:189935 發表于 2017-4-16 18:22 | 顯示全部樓層
    ;jmp $
       
;8086模型有問題,它取得的中斷號是最后發到總線上的數據,并不是由8259發出的中斷號,
;所以改成如下:       
yx:        MOV DX,100H  ;100H是一個沒有設備的地址
    MOV AL,60h   ;該數必須是60h,才能在有中斷時轉入60h號中斷處理程序
    OUT DX,AL
        jmp yx
回復

使用道具 舉報

ID:257351 發表于 2019-7-11 13:12 | 顯示全部樓層
好,希望做的不錯
回復

使用道具 舉報

無效樓層,該帖已經被刪除
5#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

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