?? program.psm
字號:
;================================================================
; Port address definitions...
;================================================================
CONSTANT switch_in , 00 ; Switch read port
CONSTANT leds_out , 01 ; LED write port
CONSTANT uart_data_rx , 02 ; UART receive read port
CONSTANT uart_data_tx , 03 ; UART transmit write port
CONSTANT data_present , 04 ; UART stat read port, lsb
CONSTANT buffer_full , 05 ; UART stat read port, lsb
;================================================================
; Useful constant declarations...
;================================================================
CONSTANT all_clear , 00 ; define zero
CONSTANT ascii_NUL , 00 ; ascii code (null character)
CONSTANT ascii_SOH , 01 ; ascii code (start of header)
CONSTANT ascii_STX , 02 ; ascii code (start of text)
CONSTANT ascii_ETX , 03 ; ascii code (end of text)
CONSTANT ascii_EOT , 04 ; ascii code (end of xmit)
CONSTANT ascii_ENQ , 05 ; ascii code (enquiry)
CONSTANT ascii_ACK , 06 ; ascii code (acknowledge)
CONSTANT ascii_BEL , 07 ; ascii code (bell)
CONSTANT ascii_BS , 08 ; ascii code (backspace)
CONSTANT ascii_HT , 09 ; ascii code (horiz tab)
CONSTANT ascii_LF , 0A ; ascii code (line feed)
CONSTANT ascii_VT , 0B ; ascii code (vert tab)
CONSTANT ascii_FF , 0C ; ascii code (form feed)
CONSTANT ascii_CR , 0D ; ascii code (carriage return)
CONSTANT ascii_SO , 0E ; ascii code (shift out)
CONSTANT ascii_SI , 0F ; ascii code (shift in)
CONSTANT ascii_DLE , 10 ; ascii code (data link esc)
CONSTANT ascii_DC1 , 11 ; ascii code (device ctrl 1, xon)
CONSTANT ascii_DC2 , 12 ; ascii code (device ctrl 2)
CONSTANT ascii_DC3 , 13 ; ascii code (device ctrl 3, xoff)
CONSTANT ascii_DC4 , 14 ; ascii code (device ctrl 4)
CONSTANT ascii_NAK , 15 ; ascii code (negative acknowledge)
CONSTANT ascii_SYN , 16 ; ascii code (sync idle)
CONSTANT ascii_ETB , 17 ; ascii code (end xmit block)
CONSTANT ascii_CAN , 18 ; ascii code (cancel)
CONSTANT ascii_EM , 19 ; ascii code (end of medium)
CONSTANT ascii_SUB , 1A ; ascii code (substitute)
CONSTANT ascii_ESC , 1B ; ascii code (escape)
CONSTANT ascii_FS , 1C ; ascii code (file separator)
CONSTANT ascii_GS , 1D ; ascii code (group separator)
CONSTANT ascii_RS , 1E ; ascii code (record separator)
CONSTANT ascii_US , 1F ; ascii code (unit space)
CONSTANT ascii_SPACE , 20 ; ascii code
CONSTANT ascii_EXCLAIM , 21 ; ascii code
CONSTANT ascii_DBLQUOT , 22 ; ascii code
CONSTANT ascii_NUMSIGN , 23 ; ascii code
CONSTANT ascii_DOLLAR , 24 ; ascii code
CONSTANT ascii_PERCENT , 25 ; ascii code
CONSTANT ascii_AMP , 26 ; ascii code
CONSTANT ascii_SINQUOT , 27 ; ascii code
CONSTANT ascii_LPAREN , 28 ; ascii code
CONSTANT ascii_RPAREN , 29 ; ascii code
CONSTANT ascii_ASTERISK , 2A ; ascii code
CONSTANT ascii_PLUS , 2B ; ascii code
CONSTANT ascii_COMMA , 2C ; ascii code
CONSTANT ascii_MINUS , 2D ; ascii code
CONSTANT ascii_PERIOD , 2E ; ascii code
CONSTANT ascii_FWDSLASH , 2F ; ascii code
CONSTANT ascii_0 , 30 ; ascii code
CONSTANT ascii_1 , 31 ; ascii code
CONSTANT ascii_2 , 32 ; ascii code
CONSTANT ascii_3 , 33 ; ascii code
CONSTANT ascii_4 , 34 ; ascii code
CONSTANT ascii_5 , 35 ; ascii code
CONSTANT ascii_6 , 36 ; ascii code
CONSTANT ascii_7 , 37 ; ascii code
CONSTANT ascii_8 , 38 ; ascii code
CONSTANT ascii_9 , 39 ; ascii code
CONSTANT ascii_COLON , 3A ; ascii code
CONSTANT ascii_SEMI , 3B ; ascii code
CONSTANT ascii_LESS , 3C ; ascii code
CONSTANT ascii_EQUAL , 3D ; ascii code
CONSTANT ascii_GREATER , 3E ; ascii code
CONSTANT ascii_QUESTION , 3F ; ascii code
CONSTANT ascii_CIRCAT , 40 ; ascii code
CONSTANT ascii_A , 41 ; ascii code
CONSTANT ascii_B , 42 ; ascii code
CONSTANT ascii_C , 43 ; ascii code
CONSTANT ascii_D , 44 ; ascii code
CONSTANT ascii_E , 45 ; ascii code
CONSTANT ascii_F , 46 ; ascii code
CONSTANT ascii_G , 47 ; ascii code
CONSTANT ascii_H , 48 ; ascii code
CONSTANT ascii_I , 49 ; ascii code
CONSTANT ascii_J , 4A ; ascii code
CONSTANT ascii_K , 4B ; ascii code
CONSTANT ascii_L , 4C ; ascii code
CONSTANT ascii_M , 4D ; ascii code
CONSTANT ascii_N , 4E ; ascii code
CONSTANT ascii_O , 4F ; ascii code
CONSTANT ascii_P , 50 ; ascii code
CONSTANT ascii_Q , 51 ; ascii code
CONSTANT ascii_R , 52 ; ascii code
CONSTANT ascii_S , 53 ; ascii code
CONSTANT ascii_T , 54 ; ascii code
CONSTANT ascii_U , 55 ; ascii code
CONSTANT ascii_V , 56 ; ascii code
CONSTANT ascii_W , 57 ; ascii code
CONSTANT ascii_X , 58 ; ascii code
CONSTANT ascii_Y , 59 ; ascii code
CONSTANT ascii_Z , 5A ; ascii code
CONSTANT ascii_LBKT , 5B ; ascii code
CONSTANT ascii_BKSLASH , 5C ; ascii code
CONSTANT ascii_RBKT , 5D ; ascii code
CONSTANT ascii_CARET , 5E ; ascii code
CONSTANT ascii_UNDER , 5F ; ascii code
CONSTANT ascii_TICK , 60 ; ascii code
CONSTANT ascii_a , 61 ; ascii code
CONSTANT ascii_b , 62 ; ascii code
CONSTANT ascii_c , 63 ; ascii code
CONSTANT ascii_d , 64 ; ascii code
CONSTANT ascii_e , 65 ; ascii code
CONSTANT ascii_f , 66 ; ascii code
CONSTANT ascii_g , 67 ; ascii code
CONSTANT ascii_h , 68 ; ascii code
CONSTANT ascii_i , 69 ; ascii code
CONSTANT ascii_j , 6A ; ascii code
CONSTANT ascii_k , 6B ; ascii code
CONSTANT ascii_l , 6C ; ascii code
CONSTANT ascii_m , 6D ; ascii code
CONSTANT ascii_n , 6E ; ascii code
CONSTANT ascii_o , 6F ; ascii code
CONSTANT ascii_p , 70 ; ascii code
CONSTANT ascii_q , 71 ; ascii code
CONSTANT ascii_r , 72 ; ascii code
CONSTANT ascii_s , 73 ; ascii code
CONSTANT ascii_t , 74 ; ascii code
CONSTANT ascii_u , 75 ; ascii code
CONSTANT ascii_v , 76 ; ascii code
CONSTANT ascii_w , 77 ; ascii code
CONSTANT ascii_x , 78 ; ascii code
CONSTANT ascii_y , 79 ; ascii code
CONSTANT ascii_z , 7A ; ascii code
CONSTANT ascii_LBRACE , 7B ; ascii code
CONSTANT ascii_VBAR , 7C ; ascii code
CONSTANT ascii_RBRACE , 7D ; ascii code
CONSTANT ascii_TILDE , 7E ; ascii code
CONSTANT ascii_DEL , 7F ; ascii code
;================================================================
; Actual assembly program goes here...
;================================================================
cold_start: LOAD s0, all_clear ; zero out reg s0
; LAB TASK #2
; Write code to output a short (10 characters
; or less) message to the serial port.
LOAD s0, ascii_X ; load the value of 'X'
OUTPUT s0, uart_data_tx ; output value to hyperterminal
LOAD s0, ascii_i ; load the value of 'i'
OUTPUT s0, uart_data_tx ; output value to hyperterminal
LOAD s0, ascii_l ; load the value of 'l'
OUTPUT s0, uart_data_tx ; output value to hyperterminal
LOAD s0, ascii_i ; load the value of 'i'
OUTPUT s0, uart_data_tx ; output value to hyperterminal
LOAD s0, ascii_n ; load the value of 'n'
OUTPUT s0, uart_data_tx ; output value to hyperterminal
LOAD s0, ascii_x ; load the value of 'x'
OUTPUT s0, uart_data_tx ; output value to hyperterminal
LOAD s0, ascii_SPACE ; add a space
OUTPUT s0, uart_data_tx ; output value to hyperterminal
LOAD s0, ascii_R ; load the value of 'R'
OUTPUT s0, uart_data_tx ; output value to hyperterminal
LOAD s0, ascii_u ; load the value of 'u'
OUTPUT s0, uart_data_tx ; output value to hyperterminal
LOAD s0, ascii_l ; load the value of 'l'
OUTPUT s0, uart_data_tx ; output value to hyperterminal
LOAD s0, ascii_e ; load the value of 'e'
OUTPUT s0, uart_data_tx ; output value to hyperterminal
LOAD s0, ascii_s ; load the value of 's'
OUTPUT s0, uart_data_tx ; output value to hyperterminal
loop: INPUT s1, switch_in ; read switch state
OUTPUT s1, leds_out ; write it to leds
; LAB TASK #1
; Write code to read the switch state and
; then write it to the LED control port.
rs232_echo: LOAD s0, all_clear ; zero out reg s0 (nop)
; LAB TASK #3
; Write code to check if a byte has been
; received by the uart. If so, write it
; back to the uart transmit port. If not
; don't do anything and just...
JUMP loop ; loop again
;================================================================
;
;================================================================
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -