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

📄 mon88.lst

📁 cpu86是用VHDL描述的8088IP核
💻 LST
📖 第 1 页 / 共 5 页
字号:
  177 0472  B0 20 E8 42 0F                    WRSPACE
  178 0477  FF 67 02                          JMP     [BX+2]                      ; Execute Command
  179                             
  180 047A  83 C3 04              NEXTCMD1:   ADD     BX,4
  181 047D  81 FB D5 04                       CMP     BX,OFFSET ENDTAB1
  182 0481  75 E9                             JNE     CMPCMD1                     ; Continue looking
  183                             
  184 0483  E8 44 0F                          CALL    RXCHAR                      ; Get Second Command Byte, DX=command
  185 0486  E8 23 0F                          CALL    TO_UPPER
  186 0489  8A D0                             MOV     DL,AL
  187                             
  188 048B  BB D7 04                          MOV     BX,OFFSET CMDTAB2
  189 048E  8B 07                 CMPCMD2:    MOV     AX,[BX]
  190 0490  39 D0                             CMP     AX,DX
  191 0492  75 08                             JNE     NEXTCMD2
  192 0494  B0 20 E8 20 0F                    WRSPACE
  193 0499  FF 67 02                          JMP     [BX+2]                      ; Execute Command
  194                             
  195 049C  83 C3 04              NEXTCMD2:   ADD     BX,4
  196 049F  81 FB 0B 05                       CMP     BX,OFFSET ENDTAB2
  197 04A3  75 E9                             JNE     CMPCMD2                     ; Continue looking
  198                             
  199 04A5  BE 1B 2E                          MOV     SI,OFFSET ERRCMD_MESS       ; Display Unknown Command, followed by usage 
                                  message
  200 04A8  E8 4B 0E                          CALL    PUTS
  201 04AB  EB AE                             JMP     CMD                         ; Try again
  202                             
  203 04AD  4C 00 67 09           CMDTAB1     DW      'L',LOADHEX                 ; Single char Command Jump Table
  204 04B1  52 00 87 08                       DW      'R',DISPREG
  205 04B5  47 00 F8 06                       DW      'G',EXECPROG
  206 04B9  4E 00 E0 06                       DW      'N',TRACENEXT
  207 04BD  54 00 EC 06                       DW      'T',TRACEPROG
  208 04C1  55 00 A3 05                       DW      'U',DISASSEM
  209 04C5  48 00 D8 12                       DW      'H',DISPHELP
  210 04C9  3F 00 D8 12                       DW      '?',DISPHELP
  211 04CD  51 00 E1 12                       DW      'Q',EXITMON
  212 04D1  0D 00 5B 04                       DW      CR ,CMD
  213 04D5  20 00                 ENDTAB1     DW      ' '
  214                             
  215 04D7  4D 46 66 08           CMDTAB2     DW      'FM',FILLMEM                ; Double char Command Jump Table
  216 04DB  4D 44 A7 07                       DW      'DM',DUMPMEM
  217 04DF  50 42 0D 05                       DW      'BP',SETBREAKP              ; Set Breakpoint
  218 04E3  42 43 36 05                       DW      'CB',CLRBREAKP              ; Clear Breakpoint
  219 04E7  42 44 4D 05                       DW      'DB',DISPBREAKP             ; Display Breakpoint
  220 04EB  52 43 51 06                       DW      'CR',CHANGEREG              ; Change Register
  221 04EF  42 4F 62 07                       DW      'OB',OUTPORTB
  222 04F3  53 42 CE 06                       DW      'BS',CHANGEBS               ; Change Base Segment Address
  223 04F7  57 4F 73 07                       DW      'OW',OUTPORTW
  224 04FB  42 49 84 07                       DW      'IB',INPORTB
  225 04FF  57 49 95 07                       DW      'IW',INPORTW
  226 0503  42 57 15 06                       DW      'WB',WRMEMB                 ; Write Byte to Memory
  227 0507  57 57 33 06                       DW      'WW',WRMEMW                 ; Write Word to Memory
  228 050B  3F 3F                 ENDTAB2     DW      '??'
  229                             
  230                             ;----------------------------------------------------------------------
  231                             ; Set Breakpoint
  232                             ;----------------------------------------------------------------------
  233 050D  BB 83 05              SETBREAKP:  MOV     BX,OFFSET BPTAB             ; BX point to Breakpoint table
  234 0510  E8 44 0E                          CALL    GETHEX1                     ; Set Breakpoint, first get BP number
  235 0513  24 07                             AND     AL,07h                      ; Allow 8 breakpoints
  236 0515  32 E4                             XOR     AH,AH
  237 0517  D0 E0                             SHL     AL,1                        ; *4 to get offset
  238 0519  D0 E0                             SHL     AL,1
  239 051B  01 C3                             ADD     BX,AX                       ; point to table entry
  240 051D  C6 47 03 01                       MOV     BYTE [BX+3],1               ; Enable Breakpoint
  241 0521  B0 20 E8 93 0E                    WRSPACE
  242 0526  E8 0C 0E                          CALL    GETHEX4                     ; Get Address
  243 0529  89 07                             MOV     [BX],AX                     ; Save Address
  244                             
  245 052B  8B F8                             MOV     DI,AX
  246 052D  26 8A 05                          MOV     AL,ES:[DI]                  ; Get the opcode
  247 0530  88 47 02                          MOV     [BX+2],AL                   ; Store in table
  248                             
  249 0533  E9 17 00                          JMP     DISPBREAKP                  ; Display Enabled Breakpoints
  250                             
  251                             ;----------------------------------------------------------------------
  252                             ; Clear Breakpoint
  253                             ;----------------------------------------------------------------------
  254 0536  BB 83 05              CLRBREAKP:  MOV     BX,OFFSET BPTAB             ; BX point to Breakpoint table
  255 0539  E8 1B 0E                          CALL    GETHEX1                     ; first get BP number
  256 053C  24 07                             AND     AL,07h                      ; Only allow 8 breakpoints
  257 053E  32 E4                             XOR     AH,AH
  258 0540  D0 E0                             SHL     AL,1                        ; *4 to get offset
  259 0542  D0 E0                             SHL     AL,1
  260 0544  01 C3                             ADD     BX,AX                       ; point to table entry
  261 0546  C6 47 03 00                       MOV     BYTE [BX+3],0               ; Clear Breakpoint
  262                             
  263 054A  E9 00 00                          JMP     DISPBREAKP                  ; Display Remaining Breakpoints
  264                             
  265                             ;----------------------------------------------------------------------
  266                             ; Display all enabled Breakpoints
  267                             ; # Addr
  268                             ; 0 1234
  269                             ;----------------------------------------------------------------------
  270 054D  E8 C6 0D              DISPBREAKP: CALL    NEWLINE
  271 0550  BB 83 05                          MOV     BX,OFFSET BPTAB
  272 0553  B9 08 00                          MOV     CX,8
  273                             
  274 0556  B8 08 00              NEXTCBP:    MOV     AX,8
  275 0559  2A C1                             SUB     AL,CL
  276                             
  277 055B  F6 47 03 01                       TEST    BYTE [BX+3],1               ; Check enable/disable flag
  278 055F  74 1A                             JZ      NEXTDBP
  279                             
  280 0561  E8 25 0E                          CALL    PUTHEX1                     ; Display Breakpoint Number
  281 0564  B0 20 E8 50 0E                    WRSPACE
  282 0569  8B 07                             MOV     AX,[BX]                     ; Get Address
  283 056B  E8 FF 0D                          CALL    PUTHEX4                     ; Display it
  284 056E  B0 20 E8 46 0E                    WRSPACE
  285                             
  286 0573  8B 07                             MOV     AX,[BX]                     ; Get Address
  287 0575  E8 6C 00                          CALL    DISASM_AX                   ; Disassemble instruction & Display it
  288 0578  E8 9B 0D                          CALL    NEWLINE
  289                             
  290 057B  83 C3 04              NEXTDBP:    ADD     BX,4                        ; Next entry
  291 057E  E2 D6                             LOOP    NEXTCBP
  292 0580  E9 D8 FE                          JMP     CMD                         ; Next Command
  293                             
  294                             ;----------------------------------------------------------------------
  295                             ; Breakpoint Table, Address(2), Opcode(1), flag(1) enable=1, disable=0
  296                             ;----------------------------------------------------------------------
  297 0583  00 00 00 00           BPTAB       DB      4 DUP 0
  298 0587  00 00 00 00                       DB      4 DUP 0
  299 058B  00 00 00 00                       DB      4 DUP 0
  300 058F  00 00 00 00                       DB      4 DUP 0
  301 0593  00 00 00 00                       DB      4 DUP 0
  302 0597  00 00 00 00                       DB      4 DUP 0
  303 059B  00 00 00 00                       DB      4 DUP 0
  304 059F  00 00 00 00                       DB      4 DUP 0
  305                             
  306                             ;----------------------------------------------------------------------
  307                             ; Disassemble Range
  308                             ;----------------------------------------------------------------------
  309 05A3  E8 7D 0D              DISASSEM:   CALL    GETRANGE                    ; Range from BX to DX
  310 05A6  E8 6D 0D                          CALL    NEWLINE
  311                             
  312 05A9  52                    LOOPDIS1:   PUSH    DX
  313                             
  314 05AA  8B C3                             MOV     AX,BX                       ; Address in AX
  315 05AC  E8 BE 0D                          CALL    PUTHEX4                     ; Display it
  316                             
  317 05AF  8D 1E 90 34                       LEA     BX,DISASM_CODE              ; Pointer to code storage
  318 05B3  8D 16 60 34                       LEA     DX,DISASM_INST              ; Pointer to instr string
  319 05B7  E8 B1 05                          CALL    disasm_                     ; Disassemble Opcode
  320 05BA  8B D8                             MOV     BX,AX                       ;
  321                             
  322 05BC  50                                PUSH    AX                          ; New address returned in AX
  323 05BD  B0 20 E8 F7 0D                    WRSPACE
  324 05C2  BE 90 34                          MOV     SI,offset DISASM_CODE
  325 05C5  E8 2E 0D                          CALL    PUTS
  326 05C8  E8 1A 0D                          CALL    STRLEN                      ; String in SI, Length in AL
  327 05CB  B4 0F                             MOV     AH,15
  328 05CD  2A E0                             SUB     AH,AL
  329 05CF  E8 80 02                          CALL    WRNSPACE                    ; Write AH spaces
  330 05D2  BE 60 34                          MOV     SI,offset DISASM_INST
  331 05D5  E8 1E 0D                          CALL    PUTS
  332 05D8  E8 3B 0D                          CALL    NEWLINE
  333 05DB  58                                POP     AX
  334                             
  335 05DC  5A                                POP     DX
  336 05DD  3B D3                             CMP     DX,BX
  337 05DF  73 C8                             JNB     LOOPDIS1
  338                             
  339 05E1  E9 77 FE              EXITDIS:    JMP     CMD                         ; Next Command
  340                             
  341                             ;----------------------------------------------------------------------
  342                             ; Disassemble Instruction at AX and Display it
  343                             ; Return updated address in AX
  344                             ;----------------------------------------------------------------------
  345 05E4  06                    DISASM_AX:  PUSH    ES                          ; Disassemble Instruction
  346 05E5  56                                PUSH    SI
  347 05E6  52                                PUSH    DX
  348 05E7  53                                PUSH    BX
  349 05E8  50                                PUSH    AX
  350                             
  351 05E9  A1 C6 34                          MOV     AX,[UCS]                    ; Get Code Base segment

⌨️ 快捷键说明

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