February 23, 2000

Assembly Project - Screen and Type


Language: x86 32-bit Assembly Language
Subject: Present the keyboard type character in separated spaces
Download Link: https://googledrive.com/host/0BwXeZl7ISTIXTlJpU09UWUZMTGM/
Download  Name: Term00-Assembly-Screen
Source Code:
sseg segment stack 'stack'
sseg ends

dseg segment 'data'
   numrow  db 00d
   charrow db 00d
   elserow db 00d
   numcol  db 00d
   charcol db 27d
   elsecol db 54d
   id      db ?
   char    db 20h
dseg ends

cseg segment 'code'
   assume ds:dseg, es:dseg, ss:sseg, cs:cseg
main proc far
   mov ax, dseg
   mov ds, ax
   mov es, ax
   mov ax, sseg
   mov ss, ax
   call clrscr
start:
   call getch
   cmp char, 27d
   jz eop
   call iden
;   mov al,id
;   mov char,al
;   add al, 30h
   cmp id, 0h
   jz num
   cmp id, 1h
   jz chr
   cmp id, 2h
   jz els
   cmp id, 3h
   jz error

num:
   call numbers
   jmp start
chr:
   call characters
   jmp start
els:
   call elses
   jmp start
error:
   jmp start

eop:
   mov ah, 4ch
   int 21h
main endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
clrscr proc near
   ;------------
   mov ah, 6h
   mov al, 0h
   ;-Red-------
   mov bh, 4fh
   mov cx, 0000h
   mov dx, 1819h
   int 10h
   ;-Green------
   mov bh, 2fh
   mov cx, 001Bh
   mov dx, 1834h
   int 10h
   ;-Blue-------
   mov bh, 1fh
   mov cx, 0036h
   mov dx, 184fh
   int 10h
   ;-NULL------
   mov ah, 6h
   mov bh, 00h
   mov al, 0h
   mov cx, 001Ah
   mov dx, 181Ah
   int 10h
   mov cx, 0035h
   mov dx, 1835h
   int 10h
   ;-----------
   ret
clrscr endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
getch proc near
   mov ah, 07h
   int 21h
   mov char, al
   ret
getch endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
iden proc near
   cmp char, 30h
   jl else1
   cmp char, 39h
   jg next
   mov id, 0h
   ret

next:
   cmp char, 41h
   jl else1
   cmp char, 5ah
   jg next1
   mov id, 1h
   ret

next1:
   cmp char, 61h
   jl else1
   cmp char, 7ah
   jg else1
   mov id, 1h
   ret

else1:
   cmp char, 21h
   jl end1
   cmp char, 7eh
   jg end1
   mov id, 2h
   ret

end1:
   mov id, 3h
   ret
iden endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
numbers proc near
   inc numcol
   cmp numcol, 26d
   jg nextn
putn:
   mov dh, numrow
   mov dl, numcol
   call setcursor
   mov bl, 4fh
   call putchar
   ret
nextn:
   cmp numrow, 24d
   jz scrolldwnn
   inc numrow
   sub numcol, 26d
   jmp putn
scrolldwnn:
   mov ah, 6h
   mov bh, 4fh
   mov cx, 0000h
   mov dx, 1819h
   mov al, 1h
   int 10h
   sub numcol, 26d
   jmp putn
numbers endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
characters proc near
   inc charcol
   cmp charcol, 53d
   jg nextc

putc:
   mov dh, charrow
   mov dl, charcol
   call setcursor
   mov bl, 2fh
   call putchar
   ret

nextc:
   cmp charrow, 24d
   jz scrolldwnc
   inc charrow
   sub charcol, 26d
   jmp putc

scrolldwnc:
   mov ah, 6h
   mov bh, 2fh
   mov cx, 001Bh
   mov dx, 1834h
   mov al, 1h
   int 10h
   sub charcol, 26d
   jmp putc

characters endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
elses proc near
   inc elsecol
   cmp elsecol, 80d
   jg nexte

pute:
   mov dh, elserow
   mov dl, elsecol
   call setcursor
   mov bl, 1fh
   call putchar
   ret

nexte:
   cmp elserow, 24d
   jz scrolldwne
   inc elserow
   sub elsecol, 26d
   jmp pute

scrolldwne:
   mov ah, 6h
   mov bh, 1fh
   mov cx, 0036h
   mov dx, 184fh
   mov al, 1h
   int 10h
   sub elsecol, 26d
   jmp pute
elses endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
setcursor proc near
   dec dl
   mov bh, 0h
   mov ah, 02h
   int 10h
   ret
setcursor endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
putchar proc near
   mov ah, 09h
   mov bh, 0h
   mov cx, 1h
   mov al, char
   int 10h
   ret
putchar endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
cseg ends

end main




No comments: