OpenCores
URL https://opencores.org/ocsvn/next186/next186/trunk

Subversion Repositories next186

[/] [next186/] [trunk/] [sample/] [mon/] [a.asm] - Rev 2

Compare with Previous | Blame | View Log

.186
.model tiny
.code
zero: 
        org 24h
srecv label near  
        org 100h
start:   
        xor ax,ax
        mov es,ax
        mov word ptr es:[10h*4], offset int10
        mov es:[10h*4+2], cs
        mov word ptr es:[11h*4], offset int11
        mov es:[11h*4+2], cs
        mov ax,1
        mov ax,cs
        mov es,ax

newline:
        mov di, offset buf 
        mov cx, 15              
newchar:
        int 10h
        mov al,ah
        stosb
        int 11h
        cmp al,8
        jne nobs
        sub di,2
        cmp di,offset buf
        jae nobs
        mov di,offset buf
nobs:
        cmp al,13
        jz nc1
        loop newchar
        mov al,13
        stosb
        int 11h
nc1:        
        mov byte ptr [di-1], 0
        mov si,offset buf
        cmp byte ptr [si],'d'
        jne nodump

        mov cx,8
        xor si,si
 dl1:       
        mov dx,16
        push cx
        call dumpline
        mov al,13
        int 11h
        pop cx
        loop dl1
   
        jmp cr    
nodump:        
        call prtstr
        mov al, '?'
        int 11h
cr:        
        mov al,13
        int 11h
        jmp newline

buf     db 16 dup(0)

;--------------------------------- receive char INT10 -----------------------------------
int10:  ; get RS232 char in ah
        push cx
        call srecv
        pop cx
        iret

;--------------------------------- send char INT11 -----------------------------------
int11:  ; write RS232 char from al
        push ax
        push cx
        out 0,al
        mov ah,1
        add ax,ax
int111:
        out 1,al
        mov cx,0adh;8bh;90h
even         
        loop $
        shr ax,1
        jnz int111
        pop cx
        pop ax
        iret

;--------------------------------- print string at SI -----------------------------------
prtstr:
        lodsb
        test al,al
        jz prtstr1
        int 11h
        jmp prtstr
prtstr1:
        ret     

;--------------------------------- print 4 digit hex number in ax -------------------------------
prthex4: 
        xchg ah,al
        call prthex2
        mov al,ah
;--------------------------------- print 2 digit hex number in al -------------------------------
prthex2: 
        mov bx, offset hexdigit
        push ax
        shr al,4
        xlat
        int 11h
        pop ax
        and al,15
        xlat
        int 11h
        ret
hexdigit db "0123456789ABCDEF"

;-------------------------------- dump DX bytes memory at DS:SI -------------------------------
dumpline:
        mov ax,ds
        call prthex4
        mov al, ':'
        int 11h
        mov ax,si
        call prthex4
        mov cx,dx
        mov al,' '
        int 11h
dump1:
        mov al, ' '
        int 11h
        lodsb
        call prthex2
        loop dump1
        mov cx,dx
        sub si,dx 
        mov al,' '
        int 11h
        int 11h       
dump2:
        lodsb
        sub al,32
        cmp al,128-32
        jb dump3
        mov al,'.'-32
dump3:  add al,32      
        int 11h
        loop dump2
        ret

end start

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.