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