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

📄 hellostr.lst

📁 关于8086的软核fpga代码
💻 LST
字号:
    1                             ;***************************************************************
    2                             ; Test CALL Instructions
    3                             ;
    4                             ; version 0.1
    5                             ;***************************************************************
    6                             ;MAX_MEMORY EQU     128                         ; Available memory in KByte, see ADDR_WIDTH 
                                  generic in MemBlock
    7 = : 000A                    LF          EQU     0Ah
    8 = : 000D                    CR          EQU     0Dh
    9                             
   10                             ; PIO, 0x398-0x39F
   11 = : 0398                    PIO                     EQU             0398h
   12                             
   13                             ; UART settings, COM1
   14 = : 03F8                    COM1        EQU     03F8h
   15 = : 02F8                    COM2        EQU     02F8h
   16 = : 03F8                    COMPORT         EQU             COM1
   17                             
   18 = : 0000                    DATAREG     EQU     0
   19 = : 0001                    STATUS      EQU     1
   20 = : 0002                    DIVIDER     EQU     2
   21                             
   22 = : 0002                    TX_EMPTY    EQU     02
   23 = : 0001                    RX_AVAIL    EQU     01
   24 = : 0004                    FRAME_ERR   EQU     04
   25                             
   26                                             org  0400h                      ; result in .com start IP=0100
   27                             
   28 0400  8C C8                                 MOV             AX,CS
   29 0402  8E D0                         MOV     SS,AX
   30 0404  B8 79 04                      MOV     AX,OFFSET TOS               ; Top of Stack
   31 0407  89 C4                         MOV     SP,AX                       ; Set Stack pointer
   32                             
   33                             
   34 0409  BE 3F 04              AGAIN:  MOV     SI,OFFSET WELCOME_MESS          ; OFFSET -> SI
   35 040C  E8 02 00                      CALL    PUTS                            ; String pointed to by DS:[SI]
   36 040F  EB F8                                 JMP             AGAIN
   37                             ;------------------------------------------------------------------------------------
   38                             ; Write zero terminated string to CONOUT
   39                             ; String pointed to by DS:[SI]
   40                             ;------------------------------------------------------------------------------------
   41 0411  56                    PUTS:   PUSH    SI
   42 0412  FC                            CLD
   43 0413  AC                    PRINT:  LODSB                                   ; AL=DS:[SI++]
   44 0414  0A C0                         OR      AL,AL                           ; Zero?
   45 0416  74 05                         JZ      PRINT_X                         ; then exit
   46 0418  E8 04 00                      CALL    TXCHAR
   47 041B  EB F6                         JMP     PRINT                           ; Next Character
   48 041D  5E                    PRINT_X:POP     SI
   49 041E  C3                            RET
   50                             
   51                             ;------------------------------------------------------------------------------------
   52                             ; Transmit character in AL
   53                             ; AX Changed
   54                             ;------------------------------------------------------------------------------------
   55 041F  52                    TXCHAR: PUSH    DX
   56 0420  50                            PUSH    AX                              ; Character in AL
   57 0421  BA F9 03                      MOV     DX,COMPORT+STATUS
   58 0424  EC                    WAITTX: IN      AL,DX                           ; read status
   59 0425  24 02                         AND     AL,TX_EMPTY                     ; Transmit Register Empty?
   60 0427  74 FB                         JZ      WAITTX                          ; no, wait
   61 0429  BA F8 03                      MOV     DX,COMPORT+DATAREG                ; point to data port
   62 042C  58                            POP     AX
   63 042D  EE                            OUT     DX,AL
   64 042E  5A                            POP     DX
   65 042F  C3                            RET
   66                             
   67                             ;;------------------------------------------------------------------------------------
   68                             ;; Receive character in AL, blocking
   69                             ;; AX Changed
   70                             ;;------------------------------------------------------------------------------------
   71 0430  52                    RXCHAR: PUSH    DX
   72 0431  BA F9 03                      MOV     DX,COMPORT+STATUS
   73 0434  EC                    WAITRX: IN      AL,DX
   74 0435  24 01                         AND     AL,RX_AVAIL
   75 0437  74 FB                         JZ      WAITRX                          ; blocking
   76 0439  BA F8 03                      MOV     DX,COMPORT+DATAREG
   77 043C  EC                            IN      AL,DX                           ; return result in al
   78 043D  5A                            POP     DX
   79 043E  C3                            RET
   80                             
   81 043F  0D 0A 48 65 6C 6C     WELCOME_MESS  DB    0dh,0ah,"Hello World, this is a simpel string tx test: baudrate=",0
   82 0479  00 00                 TOS     DW      ?                           ; Top of stack

⌨️ 快捷键说明

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