Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
CS401 Assignment 5 Solution July 2010
#1
[SIZE="3"]Its just an idea .. please do not copy paste[/SIZE]


Display a tick count on the middle of the screen in which, when the capital A is pressed the timer start when the capital B is pressed the timer stop.


Solution:

Code:
[org 0x0100] jmp start seconds: dw 0 timerflag: dw 0 oldkb: dd 0 ; subroutine to print a number at center of screen printnum: push bp mov bp, sp push es push ax push bx push cx push dx push di mov ax, 0xb800 mov es, ax ; point es to video base mov ax, [bp+4] ; load number in ax mov bx, 10 ; use base 10 for division mov cx, 0 ; initialize count of digits nextdigit: mov dx, 0 ; zero upper half of dividend div bx ; divide by 10 add dl, 0x30 ; convert digit into ascii value push dx ; save ascii value on stack inc cx ; increment count of values cmp ax, 0 ; is the quotient zero jnz nextdigit ; if no divide it again mov di, 70 ; point di to 35th column nextpos: pop dx ; remove a digit from the stack mov dh, 0x07 ; use normal attribute mov [es:di], dx ; print char on screen add di, 2 ; move to next screen location loop nextpos ; repeat for all digits on stack pop di pop dx pop cx pop bx pop ax pop es pop bp ret 2 ; keyboard interrupt service routine kbisr: push ax in al, 0x60 ; read char from keyboard port cmp al, 0x41 ; has the Capital A pressed jne nextcmp ; no, try next comparison cmp word [cs:timerflag], 1; is the flag already set je exit ; yes, leave the ISR mov word [cs:timerflag], 1; set flag to start printing jmp exit ; leave the ISR nextcmp: cmp al, 0x42 ; has the Capital B pressed jne nomatch ; no, chain to old ISR mov word [cs:timerflag], 0; reset flag to stop printing jmp exit ; leave the interrupt routine nomatch: pop ax jmp far [cs:oldkb] ; call original ISR exit: mov al, 0x20 out 0x20, al ; send EOI to PIC pop ax iret ; return from interrupt ; timer interrupt service routine timer: push ax cmp word [cs:timerflag], 1 ; is the printing flag set jne skipall ; no, leave the ISR inc word [cs:seconds] ; increment tick count push word [cs:seconds] call printnum ; print tick count skipall: mov al, 0x20 out 0x20, al ; send EOI to PIC pop ax iret ; return from interrupt start: xor ax, ax mov es, ax ; point es to IVT base mov ax, [es:9*4] mov [oldkb], ax ; save offset of old routine mov ax, [es:9*4+2] mov [oldkb+2], ax ; save segment of old routine cli ; disable interrupts mov word [es:9*4], kbisr ; store offset at n*4 mov [es:9*4+2], cs ; store segment at n*4+2 mov word [es:8*4], timer ; store offset at n*4 mov [es:8*4+2], cs ; store segment at n*4+ sti ; enable interrupts mov dx, start ; end of resident portion add dx, 15 ; round up to next para mov cl, 4 shr dx, cl ; number of paras mov ax, 0x3100 ; terminate and stay resident int 0x21.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Cs403 Assignment 3 Helping material May 8,2010 viki 1 5,203 04-28-2020, 03:19 PM
Last Post: ClaireBeauc
  cs301 assignment no 3 Solution 20 January 2016 Vuhelper 0 11,089 01-20-2016, 03:32 PM
Last Post: Vuhelper
  CS201 Assignment vo 3 Solution 20th January 2016 Vuhelper 2 2,597 01-20-2016, 03:28 PM
Last Post: Vuhelper
  CS101 Assignment no 3 Solution 20th January 2016 Vuhelper 0 2,279 01-20-2016, 03:25 PM
Last Post: Vuhelper
  SOC101 INTRODUCTION TO SOCIOLOGY assignment no 3 Solution 20 January 2016 Vuhelper 0 1,869 01-20-2016, 03:19 PM
Last Post: Vuhelper
  CS402 Assignment No 4 Solution & Discussion Xpert 0 2,098 08-01-2015, 02:33 AM
Last Post: Xpert
  cs101 Assignment No. 1 Solution 21 may spring 2015 semester Xpert 0 2,909 05-21-2015, 12:41 AM
Last Post: Xpert
  Assignment solution eng 301 due date 20 may 2015 rumesa khan 3 4,531 05-20-2015, 01:34 AM
Last Post: Xpert
  PHY301 Circuit Theory Assignment No. 1 idea Solution spring may 2015 semester Xpert 0 1,558 05-15-2015, 03:52 AM
Last Post: Xpert
  Assignment No. 01 Spring 2015 Information Systems CS507 idea solution spring 2015 Xpert 0 2,447 05-15-2015, 03:49 AM
Last Post: Xpert

Forum Jump:


Users browsing this thread: 1 Guest(s)