📄 hellostr.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 + -