Language Assembler (8051)
| Date: | 04/20/05 |
| Author: | Bill Webster |
| URL: | n/a |
| Comments: | 0 |
| Info: | n/a |
| Score: |
;/ bottles on the wall in 8051 assembler
;/
;/ bill webster 2003
;/____________________________________________________________________________
; sfr definitions
SCON data 0x98
SBUF data 0x99
PCON data 0x87
TMOD data 0x89
TH1 data 0x8D
B data 0xF0
; bit definitions
TI bit 0x99
TR1 bit 0x8E
;/ start vector
;/____________________________________________________________________________
cseg at 0
jmp start
cseg at 0x30
;/ print number in r0 as decimal - limited to numbers in [0..99]
;/____________________________________________________________________________
putn:
mov a, r0
mov b, #10
div ab
jz units
call printDigit
units:
mov a, b
; fall through
;/ convert number in [0..9] to ascii digit & print
;/____________________________________________________________________________
printDigit:
add a, #'0'
; fall through
;/ character out
;/____________________________________________________________________________
putch:
jnb TI, putch
clr TI
mov SBUF, a
ret
;/ print string at dptr
;/____________________________________________________________________________
puts:
clr a
movc a, @a + dptr
jnz more
ret
more:
call putch
inc dptr
jmp puts
;/
;/____________________________________________________________________________
start:
; initialize serial port
orl TMOD, #0x20
setb TR1
mov SCON, #0x50
mov TH1, #0xFE
orl PCON, #0x80
setb TI
; bottles to begin with
mov r0, #99
verse:
call putn
mov dptr, #line1
call puts
call putn
mov dptr, #line2
call puts
dec r0
call putn
mov dptr, #line1
call puts
mov dptr, #eoln
call puts
cjne r0, #0, verse
jmp $
;/ string constants
;/____________________________________________________________________________
cr equ 0x0D
lf equ 0x0A
line1: db ' bottles of beer on the wall,'
eoln: db cr, lf, 0
line2: db ' bottles of beer,', cr, lf
db 'Take one down, pass it around,', cr, lf, 0
end
Download Source | Write Comment
Download Source | Write Comment
Add Comment
Please provide a value for the fields Name,
Comment and Security Code.
This is a gravatar-friendly website.
E-mail addresses will never be shown.
Enter your e-mail address to use your gravatar.
Please don't post large portions of code here! Use the form to submit new examples or updates instead!
Comments