⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mon88.lst

📁 关于8086的软核fpga代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
  528 0734  8B 16 B6 34                       MOV     DX,[UDX]
  529 0738  8B 2E BA 34                       MOV     BP,[UBP]
  530 073C  8B 36 BC 34                       MOV     SI,[USI]
  531 0740  8B 3E BE 34                       MOV     DI,[UDI]
  532                             
  533 0744  8E 06 C2 34                       MOV     ES,[UES]
  534 0748  FA                                CLI                                 ; User User Stack!!
  535 0749  8E 16 C4 34                       MOV     SS,[USS]
  536 074D  8B 26 B8 34                       MOV     SP,[USP]
  537                             
  538 0751  FF 36 CA 34                       PUSH    [UFL]
  539 0755  FF 36 C6 34                       PUSH    [UCS]                       ; Push CS (Base Segment)
  540 0759  FF 36 C8 34                       PUSH    [UIP]
  541 075D  8E 1E C0 34                       MOV     DS,[UDS]
  542 0761  CF                                IRET                                ; Execute!
  543                             
  544                             ;----------------------------------------------------------------------
  545                             ; Write Byte to Output port
  546                             ;----------------------------------------------------------------------
  547 0762  E8 D0 0B              OUTPORTB:   CALL    GETHEX4                     ; Get Port address
  548 0765  8B D0                             MOV     DX,AX
  549 0767  B0 3D E8 4D 0C                    WREQUAL
  550 076C  E8 D3 0B                          CALL    GETHEX2                     ; Get Port value
  551 076F  EE                                OUT     DX,AL
  552 0770  E9 E8 FC                          JMP     CMD                         ; Next Command
  553                             
  554                             ;----------------------------------------------------------------------
  555                             ; Write Word to Output port
  556                             ;----------------------------------------------------------------------
  557 0773  E8 BF 0B              OUTPORTW:   CALL    GETHEX4                     ; Get Port address
  558 0776  8B D0                             MOV     DX,AX
  559 0778  B0 3D E8 3C 0C                    WREQUAL
  560 077D  E8 B5 0B                          CALL    GETHEX4                     ; Get Port value
  561 0780  EF                                OUT     DX,AX
  562 0781  E9 D7 FC                          JMP     CMD                         ; Next Command
  563                             
  564                             ;----------------------------------------------------------------------
  565                             ; Read Byte from Input port
  566                             ;----------------------------------------------------------------------
  567 0784  E8 AE 0B              INPORTB:    CALL    GETHEX4                     ; Get Port address
  568 0787  8B D0                             MOV     DX,AX
  569 0789  B0 3D E8 2B 0C                    WREQUAL
  570 078E  EC                                IN      AL,DX
  571 078F  E8 E6 0B                          CALL    PUTHEX2
  572 0792  E9 C6 FC                          JMP     CMD                         ; Next Command
  573                             
  574                             ;----------------------------------------------------------------------
  575                             ; Read Word from Input port
  576                             ;----------------------------------------------------------------------
  577 0795  E8 9D 0B              INPORTW:    CALL    GETHEX4                     ; Get Port address
  578 0798  B0 3D E8 1C 0C                    WREQUAL
  579 079D  E8 19 0C                          CALL    TXCHAR
  580 07A0  ED                                IN      AX,DX
  581 07A1  E8 C9 0B                          CALL    PUTHEX4
  582 07A4  E9 B4 FC                          JMP     CMD                         ; Next Command
  583                             
  584                             ;----------------------------------------------------------------------
  585                             ; Display Memory
  586                             ;----------------------------------------------------------------------
  587 07A7  E8 79 0B              DUMPMEM:    CALL    GETRANGE                    ; Range from BX to DX
  588 07AA  BE CC 34              NEXTDMP:    MOV     SI,OFFSET DUMPMEMS          ; Store ASCII values
  589                             
  590 07AD  E8 66 0B                          CALL    NEWLINE
  591 07B0  8C C0                             MOV     AX,ES
  592 07B2  E8 B8 0B                          CALL    PUTHEX4
  593 07B5  B0 3A                             MOV     AL,':'
  594 07B7  E8 FF 0B                          CALL    TXCHAR
  595 07BA  8B C3                             MOV     AX,BX
  596 07BC  25 F0 FF                          AND     AX,0FFF0h
  597 07BF  E8 AB 0B                          CALL    PUTHEX4
  598 07C2  B0 20 E8 F2 0B                    WRSPACE                             ; Write Space
  599 07C7  B0 20 E8 ED 0B                    WRSPACE                             ; Write Space
  600                             
  601 07CC  8A E3                             MOV     AH,BL                       ; Save lsb
  602 07CE  80 E4 0F                          AND     AH,0Fh                      ; 16 byte boundary
  603                             
  604 07D1  E8 7E 00                          CALL    WRNSPACE                    ; Write AH spaces
  605 07D4  E8 7B 00                          CALL    WRNSPACE                    ; Write AH spaces
  606 07D7  E8 78 00                          CALL    WRNSPACE                    ; Write AH spaces
  607                             
  608 07DA  B9 10 00              DISPBYTE:   MOV     CX,16
  609 07DD  2A CC                             SUB     CL,AH
  610                             
  611 07DF  26 8A 07              LOOPDMP1:   MOV     AL,ES:[BX]                  ; Get Byte and display it in HEX
  612 07E2  88 04                             MOV     DS:[SI],AL                  ; Save it
  613 07E4  E8 91 0B                          CALL    PUTHEX2
  614 07E7  B0 20 E8 CD 0B                    WRSPACE                             ; Write Space
  615 07EC  43                                INC     BX
  616 07ED  46                                INC     SI
  617 07EE  3B DA                             CMP     BX,DX
  618 07F0  73 09                             JNC     SHOWREM                     ; show remaining
  619 07F2  E2 EB                             LOOP    LOOPDMP1
  620                             
  621 07F4  E8 32 00                          CALL    PUTSDMP                     ; Display it
  622                             
  623 07F7  3B D3                             CMP     DX,BX                       ; End of memory range?
  624 07F9  73 AF                             JNC     NEXTDMP                     ; No, continue with next 16 bytes
  625                             
  626 07FB  BE CC 34              SHOWREM:    MOV     SI,OFFSET DUMPMEMS          ; Stored ASCII values
  627 07FE  8B C3                             MOV     AX,BX
  628 0800  25 0F 00                          AND     AX,0000Fh
  629 0803  84 C0                             TEST    AL
  630 0805  74 1A                             JZ      SKIPCLR
  631 0807  01 C6                             ADD     SI,AX                       ; Offset
  632 0809  B4 10                             MOV     AH,16
  633 080B  2A E0                             SUB     AH,AL
  634 080D  88 E1                             MOV     CL,AH
  635 080F  32 ED                             XOR     CH,CH
  636 0811  B0 20                             MOV     AL,' '                      ; Clear non displayed values
  637 0813  88 04                 NEXTCLR:    MOV     DS:[SI],AL                  ; Save it
  638 0815  46                                INC     SI
  639 0816  E2 FB                             LOOP    NEXTCLR
  640 0818  E8 37 00                          CALL    WRNSPACE                    ; Write AH spaces
  641 081B  E8 34 00                          CALL    WRNSPACE                    ; Write AH spaces
  642 081E  E8 31 00                          CALL    WRNSPACE                    ; Write AH spaces
  643 0821  32 E4                 SKIPCLR:    XOR     AH,AH
  644 0823  E8 03 00                          CALL    PUTSDMP
  645                             
  646 0826  E9 32 FC              EXITDMP:    JMP     CMD                         ; Next Command
  647                             
  648 0829  BE CC 34              PUTSDMP:    MOV     SI,OFFSET DUMPMEMS          ; Stored ASCII values
  649 082C  B0 20 E8 88 0B                    WRSPACE                             ; Add 2 spaces
  650 0831  B0 20 E8 83 0B                    WRSPACE
  651 0836  E8 19 00                          CALL    WRNSPACE                    ; Write AH spaces
  652 0839  B9 10 00                          MOV     CX,16
  653 083C  2A CC                             SUB     CL,AH                       ; Adjust if not started at xxx0
  654 083E  AC                    NEXTCH:     LODSB                               ; Get character AL=DS:[SI++]
  655 083F  3C 1F                             CMP     AL,01Fh                     ; 20..7E printable
  656 0841  76 07                             JBE     PRINTDOT
  657 0843  3C 7F                             CMP     AL,07Fh
  658 0845  73 03                             JAE     PRINTDOT
  659 0847  E9 02 00                          JMP     PRINTCH
  660 084A  B0 2E                 PRINTDOT:   MOV     AL,'.'
  661 084C  E8 6A 0B              PRINTCH:    CALL    TXCHAR
  662 084F  E2 ED                             LOOP    NEXTCH                      ; Next Character
  663 0851  C3                                RET
  664                             
  665 0852  50                    WRNSPACE:   PUSH    AX                          ; Write AH space, skip if 0
  666 0853  51                                PUSH    CX
  667 0854  84 E4                             TEST    AH
  668 0856  74 0B                             JZ      EXITWRNP
  669 0858  32 ED                             XOR     CH,CH                       ; Write AH spaces
  670 085A  88 E1                             MOV     CL,AH
  671 085C  B0 20                             MOV     AL,' '
  672 085E  E8 58 0B              NEXTDTX:    CALL    TXCHAR
  673 0861  E2 FB                             LOOP    NEXTDTX
  674 0863  59                    EXITWRNP:   POP     CX
  675 0864  58                                POP     AX
  676 0865  C3                                RET
  677                             
  678                             ;----------------------------------------------------------------------
  679                             ; Fill Memory
  680                             ;----------------------------------------------------------------------
  681 0866  E8 BA 0A              FILLMEM:    CALL    GETRANGE                    ; First get range BX to DX
  682 0869  B0 20 E8 4B 0B                    WRSPACE
  683 086E  E8 D1 0A                          CALL    GETHEX2
  684 0871  50                                PUSH    AX                          ; Store fill character
  685 0872  E8 A1 0A                          CALL    NEWLINE
  686                             
  687 0875  3B D3                             CMP     DX,BX
  688 0877  72 0B                             JB      EXITFILL
  689 0879  2B D3                 DOFILL:     SUB     DX,BX
  690 087B  8B CA                             MOV     CX,DX
  691 087D  89 DF                             MOV     DI,BX                       ; ES:[DI]
  692 087F  58                                POP     AX                          ; Restore fill char
  693 0880  AA                    NEXTFILL:   STOSb
  694 0881  E2 FD                             LOOP    NEXTFILL
  695 0883  AA                                STOSb                               ; Last byte
  696 0884  E9 D4 FB              EXITFILL:   JMP     CMD                         ; Next Command
  697                             
  698                             ;----------------------------------------------------------------------
  699                             ; Display Registers
  700                             ;
  701                             ; AX=0001 BX=0002 CX=0003 DX=0004 SP=0005 BP=0006 SI=0007 DI=0008
  702                             ; DS=0009 ES=000A SS=000B CS=000C IP=0100   ODIT-SZAPC=0000-00000
  703                             ;----------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -