We have been working very hard since 2009 to facilitate in learning Read More. We can't keep up without your support. Donate.

www.vustudents.ning.com

 www.bit.ly/vucodes + Link For Assignments, GDBs & Online Quizzes Solution www.bit.ly/papersvu + Link For Past Papers, Solved MCQs, Short Notes & More

# CS401 Assignment No 03 Spring 2019 Solution & Discussion

+ http://bit.ly/vucodes (Link for Assignments, GDBs & Online Quizzes Solution)

+ http://bit.ly/papersvu (Link for Past Papers, Solved MCQs, Short Notes & More)

Views: 3835

Attachments:

### Replies to This Discussion

CS401-assignment-sol

CS401-assignment-sol

it is not the solution

I'm not getting it sir. how can we use this n where ?

Respected sir

This is can not be the solution in any case.Kindly share the solution which is pertinent to the question.

Thanks

A.o.A Vu ID kahan dy gay code ma

*********

This is as close to the working solution as i can get, can someone make some amendments here according to the instructions

https://stackoverflow.com/questions/57134021/how-to-print-a-string-...

# CS401 Assignment No 03 Spring 2019 Idea Solution

#Check ur self

#Code

[org 0x0100]

jmp start

oldisr: dd 0 ; space for saving old isr

; keyboard interrupt service routine

kbisr:

push ax

push es

mov ax, 0xb800

mov es, ax ; point es to video memory

in al, 0x60 ; read a character from keyboard port

cmp al, 0x11 ; has the 'w' key pressed

jne nomatch ; no, go to nomatch

mov byte [es:0], '1' ; yes, print 1

mov byte [es:2], '5' ; yes print 0

jmp exit ; leave interrupt routine

nomatch:

pop es

pop ax

jmp far [cs:oldisr] ; call the original ISR

exit

mov al, 0x20

out 0x20, al ; sent EOI to PIC

pop es

pop ax

iret ; return from interrupt

start:

xor ax, ax

mov es, ax ; point es to IVT base

mov ax, [es:9*4]

mov [oldisr], ax ; save offset of old routine

mov ax, [es:9*4+2]

mov [oldisr+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

sti ; enable interrupt

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 residant

int 0x21

[org 0x0100]

jmp start

oldisr: dd 0 ; space for saving old isr

; keyboard interrupt service routine

kbisr:

push ax

push es

mov ax, 0xb800

mov es, ax ; point es to video memory

in al, 0x60 ; read a character from keyboard port

cmp al, 0x11 ; has the 'w' key pressed

jne nomatch ; no, go to nomatch

mov byte [es:0], '1' ; yes, print 1

mov byte [es:2], '5' ; yes print 0

jmp exit ; leave interrupt routine

nomatch:

pop es

pop ax

jmp far [cs:oldisr] ; call the original ISR

exit

mov al, 0x20

out 0x20, al ; sent EOI to PIC

pop es

pop ax

iret ; return from interrupt

start:

xor ax, ax

mov es, ax ; point es to IVT base

mov ax, [es:9*4]

mov [oldisr], ax ; save offset of old routine

mov ax, [es:9*4+2]

mov [oldisr+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

sti ; enable interrupt

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 residant

int 0x21

correct solution?

cs401 assignment solution.

[org 0x0100]

jmp start

oldisr: dd 0 ; space for saving old isr

; keyboard interrupt service routine

kbisr:

push ax

push es

mov ax, 0xb800

mov es, ax ; point es to video memory

in al, 0x60 ; read a character from keyboard port

cmp al, 0x11 ; has the 'w' key pressed

jne nomatch ; no, go to nomatch

mov byte [es:0], '1' ; yes, print 1

mov byte [es:2], '5' ; yes print 0

jmp exit ; leave interrupt routine

nomatch:

pop es

pop ax

jmp far [cs:oldisr] ; call the original ISR

exit

mov al, 0x20

out 0x20, al ; sent EOI to PIC

pop es

pop ax

iret ; return from interrupt

start:

xor ax, ax

mov es, ax ; point es to IVT base

mov ax, [es:9*4]

mov [oldisr], ax ; save offset of old routine

mov ax, [es:9*4+2]

mov [oldisr+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

sti ; enable interrupt

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 residant

int 0x21

## Latest Activity

Mani Siddiqui Ex posted discussions
1 hour ago
1 hour ago
Ateeqa replied to + !! Ήලᵯᵯℹ Ⲥⱨ !! +'s discussion !!!! bilkul!!!!
3 hours ago
+ Ehtisham + liked + !! Ήලᵯᵯℹ Ⲥⱨ !! +'s discussion !!!! !!!!!!
9 hours ago
+ !! Ήලᵯᵯℹ Ⲥⱨ !! + posted discussions
10 hours ago
+!!★彡 Alan Walker彡★✓ liked Ammara Sabir's discussion !!!!!!Muhabbat!!!!!!
10 hours ago
+!!★彡 Alan Walker彡★✓ liked + !! Ήලᵯᵯℹ Ⲥⱨ !! +'s discussion !!!!LIFE !!!!!!
10 hours ago
10 hours ago
10 hours ago
10 hours ago
Anaya liked zohaib iftikhar's discussion ...*ANDHERY MAIN ROSHNI ...*
10 hours ago
10 hours ago

1

2

3

4

5