8086.doc

22
7/29/2019 8086.doc http://slidepdf.com/reader/full/8086doc 1/22 1 Write an alp to sort in ascending order using bubble sort algorithm ; a given set of byte sized unsigned numbers in memory.The sorted ; elements should replace the original unsorted elements in memory. name bubblesort  page 60,80 title ascending order using bubble sort .model small .stack 64 .data a db 34h,78h,56h,47h si_ze dw $-a ;si_ze=no of elements .code  bubsort: mov ax,@data mov ds,ax mov bx,si_ze dec bx ;bx=no of passes needed to complete sorting(n-1) outlup: mov cx,bx ;cx=no of comparisions to be performed in a pass mov si,0 inlup: mov al,a[si] inc si cmp al,a[si]  jb go_on xchg al,a[si] mov a[si-1],al go_on: loop inlup ;dec cx,until cx=0 dec bx  jnz outlup int 3 ;breakpoint interrupt align 16 end bubsort ;2. Write an 8086 alp to sort in descending order,using selestion sort ; algorithm a given set of 8 bit unsigned numbers in memory.The sorted elements ; should replace the original unsorted elements in memory.Store in a memory ; location the number of comparisions made. name selectionsort  page 60,80 title descending order using selection sort .model small

Upload: dhanya-rao-mamidi

Post on 14-Apr-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 1/22

1 Write an alp to sort in ascending order using bubble sort algorithm; a given set of byte sized unsigned numbers in memory.The sorted; elements should replace the original unsorted elements in memory.

name bubblesort

 page 60,80title ascending order using bubble sort.model small.stack 64.data

a db 34h,78h,56h,47hsi_ze dw $-a ;si_ze=no of elements

.code bubsort:

mov ax,@datamov ds,ax

mov bx,si_zedec bx ;bx=no of passes needed to complete sorting(n-1)outlup:

mov cx,bx ;cx=no of comparisions to be performed in a passmov si,0

inlup:mov al,a[si]inc sicmp al,a[si] jb go_onxchg al,a[si]

mov a[si-1],algo_on:loop inlup ;dec cx,until cx=0dec bx jnz outlupint 3 ;breakpoint interruptalign 16

end bubsort

;2. Write an 8086 alp to sort in descending order,using selestion sort; algorithm a given set of 8 bit unsigned numbers in memory.The sorted elements; should replace the original unsorted elements in memory.Store in a memory; location the number of comparisions made.

name selectionsort page 60,80

title descending order using selection sort.model small

Page 2: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 2/22

.stack 64

.dataa db 44h,11h,22h,66hsi_ze dw $-a ;si_ze=4nc dw ? ;total no of comparisions made

.codeselsort:mov ax,@datamov ds,axmov dx,si_ze ;in selsort for n elements to sort we need n-1 passesdec dx ;dx=3 no of passes requiredmov nc,0

outlup:mov cx,dx ;cx=no of comparisions to be performed in a passmov si,0mov ah,a[si]

mov bx,siinlup:inc siinc nccmp ah,a[si] jb go_onmov ah,a[si] ;ah=smallest element in the vector mov bx,si ;bx=position of the smallest element

go_on:loop inlup ;untill cx=0xchg ah,a[si] ;xchg the last element pointed by si,with themov a[bx],ah ;smallest element pointed by bxdec dx jnz outlupint 3 ;breakpoint interruptalign 16

end selsort

;3. Write an 8086 alp to sort in ascending order using Insertion Sort; algorithm,a given set of 16 bit unsigned numbers in memory.The sorted; elements should replace the original unsorted elements in memory.

name insertionsort page 60,80

title ascending order using insertion sort algorithm.model small.stack 64.data

a dw 78h,34h,12h,56h

Page 3: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 3/22

si_ze dw ($-a)/2 ;si_ze=4(no of elements).code

insort:mov ax,@datamov ds,ax

mov cx,2 ;cx=2,insert the second element in the proper positionoutlup:mov dx,cxdec dx ;dx=cx-1,max no of comparisions needed to insert elementmov si,dxadd si,simov ax,a[si]

inlup:cmp a[si-2],ax jbe inlupexitmov di,a[si-2]

mov a[si],didec sidec sidec dx jnz inlup

inlupexit:mov a[si],axinc cx ;inc cx to insert the next element in proper positioncmp cx,si_ze jbe outlup

exit:int 3 ;breakpoint interruptalign 16

end insort

;4. Add/Sub of multiwordname addsub page 60,80

title 8086 alp for multi word addition/subtraction.model small.stack 64.data

n1 db 12h,34h,56h,78h,9ah,0bch,0deh,0f0hn2 db 0bch,12h,78h,34h,56h,0deh,0f0h,9ahs db 8 dup(?)d db 8 dup(?)

.codeaddsub:

mov ax,@data

Page 4: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 4/22

mov ds,axmov cx,8 ;cx is used as loop counter mov bx,7 ;bx contains the offset address of byte in n1 & n2clc

addagn:

mov al,n1[bx]adc al,n2[bx]mov s[bx],al ;store sum in s[]dec bxloop addagn

mov cx,8mov bx,7clc

subagn:mov al,n1[bx]

sbb al,n2[bx]mov d[bx],al ;store difference in d[]dec bxloop subagn

int 3align 16

end addsub

;5. Write an 8086 alp to get the screen width(no of cols) using BIOS

; interrupt,and calculate the no of rows from the appropriate word; location in BIOS data area,and clear the screen using BIOS interrupt.

name clearscreen1 page 60,80

title clear screen using bios interrupt.model small.stack 64.data

 bytes dd 0040004chrows db ?cols db ?msg1 db 0dh,0ah,'Total no of rows(in hex)=','$'msg2 db 0dh,0ah,'Total no of columns(in hex)=','$'msg3 db 0dh,0ah,'Press any key to clear screen','$'hexcode db '0123456789abcdef'

.codedisplay proc

 push ax

Page 5: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 5/22

push bx push cx push dxlea dx,msg1 ;displays msg1mov ah,09h

int 21hmov al,rows ;al=no of rows[25]mov cl,10hmov ah,00hdiv cl ;25/10 | al=quotient[2] | ah=remainder[5]mov bl,al ;al=2mov dl,hexcode[bx] ;dl=8 bit ascii code of char to be displayed[2] push axmov ah,02h ;display char to std o/p devint 21h pop ax

mov bl,ah ;ah=5mov dl,hexcode[bx] ;dl=8 bit ascii code of char to be displayed[5]mov ah,02h ;display char to std o/p devint 21hlea dx,msg2 ;displays msg2mov ah,09hint 21hmov al,cols ;al=no of cols[80]mov cl,10hmov ah,00hmov bh,00hdiv cl ;80/10 | al=quotient[8] | ah=remainder[0]mov bl,al ;al=8mov dl,hexcode[bx] ;dl=8 bit ascii code of char to be displayed[8] push axmov ah,02h ;display char to std o/p devint 21h pop axmov bl,ah ;ah=0mov dl,hexcode[bx] ;dl=8 bit ascii code of char to be displayed[0]mov ah,02h ;display char to std o/p devint 21h pop dx pop cx pop bx pop axret

display endp ;end display procedure

main:

Page 6: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 6/22

mov ax,@datamov ds,axmov ah,0fhint 10hmov cols,ah ;ah=no of char cols on screen

mov cl,ahmov ch,0 push dslds si,bytesmov ax,[si] ;ax=total no of bytes on video page(1b ascii+1b AB) pop dsshr ax,1 ;divides ax by 2 to get total no of chars on pagediv clmov rows,alcall displaylea dx,msg3

mov ah,09h ;displays msg3int 21hmov ah,01h ;i/p char from std i/p dev & echo to std o/p devint 21hmov dh,0 ;initialize row coordinate to 0

again:mov bh,0 ;bh=page 0mov dl,0 ;initialize column coordinate to 0mov ah,02h ;set cursor position to (dl,dh)int 10hmov bl,0 ;colour(set foregnd & bckgnd of char with same colour)mov al,'x' ;char to be displayedmov ah,09h ;write char at cursor positionint 10hinc dh ;inc row coordinate by one positioncmp dh,rows jb againmov ah,4ch ;exitint 21h

end main

;6. GCD of 4 unsigned 16 bit numbersname gcd page 60,80

title program to find gcd of 4 unsigned 16 bits numbers.model small.stack 64.data

values dw 0090,0120,4bh,0019h

Page 7: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 7/22

gcd dw ?.code

hcf procagain:

cmp ax,bx

 je exit jb bigbxdivaxbx:

mov dx,0div bxcmp dx,0 je exitmov ax,dx jmp again

 bigbx:xchg ax,bx

 jmp divaxbxexit:mov gcd,bxret

hcf endp;Main programgcd4:

mov ax,@datamov ds,axmov ax,valuesmov bx,values+2call hcf mov ax,gcdmov bx,values+4call hcf mov ax,gcdmov bx,values+6call hcf int 3align 16

end gcd4

;7. LCM of 2 16 bit unsigned numbersname lcm page 60,80

title program to find lcm of 2 16 bit unsigned numbers.model small.stack 64.data

Page 8: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 8/22

values dw 0025,0015lcm dw 2 dup(?)

.codel_c_m:

mov ax,@data

mov ds,axmov dx,0mov ax,values ;dx_ax=25mov bx,values+2 ;bx=15

again: push ax push dxdiv bxcmp dx,0 ;remainder of the division is stored in dx je exit pop dx

 pop axadd ax,values jnc noincdxinc dx

noincdx: jmp again

exit: pop lcm+2 pop lcmint 3align 16

end l_c_m

;8. Write an 8086 alp to search for a given 8 bit value using linear search; in an array of 8 bit numbers.Message should be displayed on crt; indicating whether the search was a failure or a success.If it is a; success case,the position of the element in the array is to be displayed

name linearsearch page 60,80

title linear search program.model small.stack 64.data

array db 55h,33h,44h,66h,22hlen dw $-array ;length=5scrkey equ 33hasc1 equ (scrkey/10h)+'0' ;asc1='3'asc2 equ (scrkey mod 10h)+'0' ;asc2='5'

Page 9: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 9/22

sucmsg db 'Element ',asc1,asc2,' found at position:'result db ?,0ch,0ah,'$'failmsg db 'Element ',asc1,asc2,' Not found',0ch,0ah,'$'

.codelin:

mov ax,@datamov ds,axmov es,axcld ;direction flag D=0mov di,0 ;di=0,autoincrement dimov al,scrkey ;al=35mov cx,lenrepne scasb ;scasb==>[al]-[[di]] jz successlea dx,failmsg jmp display

success:mov bx,di ;bx=position of the scrkey found in arrayadd bl,'0' ;convert this position into ascii for display purposemov result,bllea dx,sucmsg

display:mov ah,09hint 21hmov ah,4chint 21halign 16

end lin

;9. Write an 8086 alp to search for a given 16 bit value using binary search; in an array of 16 bit numbers,which are in ascending order.Message; should be displayed on CRT indicating whether the search was a failure; or a success.If it is a success case,the position of the element in the; array is to be displayed.

name binarysearch page 60,80

title binary search program to search a 16 bit value.model small.stack 64.data

cr equ 13lf equ 10array dw 1122h,2345h,3344h,4455h,5566hlen dw ($-array)/2 ;length=5scrkey equ 2345h

Page 10: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 10/22

asc1 equ (scrkey/1000h)+'0' ;asc1='2'asc2 equ (scrkey/100h) mod 10h + '0' ;asc2='3'asc3 equ (scrkey/10h) mod 10h " '0' ;asc3='4'asc4 equ (scrkey mod 10h) + '0' ;asc4='5'sucmsg db 'Given Element '

db ' Found at position:'result db ?,cr,lf,'$'failmsg db 'Given Element '

db ' Not found',cr,lf,'$'.code

 binscr:mov ax,@datamov ds,axmov bx,1mov dx,len ;dx=5mov cx,scrkey ;cx=2345

again:cmp bx,dx ja failuremov ax,bxadd ax,dxshr ax,1mov si,axdec siadd si,sicmp cx,array[si] jae biger dec axmov dx,ax jmp again

 biger: je successinc axmov bx,ax jmp again

success:add al,'0'mov result,allea dx,sucmsg jmp display

failure:lea dx,failmsg

display:mov ah,09hint 21h

quit:

Page 11: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 11/22

mov ah,4chint 21halign 16

end binscr 

;10. Using BIOS routine,write an 8086 alp to find memory size of the PC you; are using.Using appropriate message,the display should indicate memory; size in Kilo bytes using 4 hex digits.Also check the result with the; appropriate word in BIOS data area using debug/codeview.

name memorysize page 60,80

title program to find memory size using int 12h.model small.stack 64

.datamsg db 'Memory size in Kilo bytes='ascres db 4 dup(?),'Hex',0ch,0ah,'$'res dw ?hexcode db '0123456789abcdef'

.codehex_asc proc

mov dl,10hmov ah,0mov bx,0div dl

mov bl,almov dh,hexcode[bx]mov bl,ahmov dl,hexcode[bx]ret

hex_asc endpmain:

mov ax,@datamov ds,axint 12hmov res,axmov al,byte ptr rescall hex_ascmov ascres+2,dhmov ascres+3,dlmov al,byte ptr res+1call hex_ascmov ascres,dhmov ascres+1,dl

Page 12: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 12/22

mov dx,offset msgmov ah,09hint 21hmov ah,4chint 21h

align 16end main

11. Write an 8086 ALP to check for the password using DOS interrupt.If ; entry does not match password display "Wrong Password! Try Again" and; remain in the loop,else display "You are authorized person" and come; out.

name checkpassword

 page 60,80title to check for password using DOS function call.model small.stack 64.data

cr equ 13lf equ 10 password db 'INDIA$' prompt db 'Enter Password & then <cr> (Max 40 chars)',cr,lf,'$'entry db 41 dup(?)msgsuc db 'You are Authorized person',cr,lf,'$'

msgfail db 'Wrong Password! Try Again',cr,lf,'$'.code pass:

mov ax,@datamov ds,axmov es,axlea dx,promptmov ah,09hint 21hmov bp,0

tryagain:mov cx,40mov bx,0

again:mov ah,08h ;read a char from KB w/o echoing on screenint 21h ;stores the char read in alcmp al,0dh ;cmp al with <cr>(0dh) je actionmov entry[bx],al ;store the chars read in entry[]

Page 13: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 13/22

inc bxloop again ;to read next char from KB

action:mov entry[bx],'$' ;store $ at the end of the arraylea si,password

lea di,entrymov cx,06 ;cx=6 length of the passwordrepe cmpsb ;cmp si(password) & di(entry) je sucmsglea dx,msgfailmov ah,09hint 21h jmp tryagain

sucmsg:lea dx,msgsucmov ah,09h

int 21hmov ah,4chint 21h

end pass

;12. Write an 8086 alp to compute factorial of a given 8 bit integer at a; byte location using recursion.The Program should display the number ; and its factorial(4 digit hex value) with an appropriate message on; the CRT.

name factorial

 page 60,80title recursive computation of factorial.model small.stack 64.data

num equ 3msg db 'Factorial of ',num+'0',' is:'ascres db 4 dup(?),'H',0dh,0ah,'$'res dw ?hexcode db '0123456789abcdef'

.codehex_asc proc

mov dl,10hmov ah,0mov bx,0div dl ;div al/dl where al=char & dl=10hmov bl,al ;al=quotientmov dh,hexcode[bx]mov bl,ah ;ah=remainder 

Page 14: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 14/22

mov dl,hexcode[bx]ret

hex_asc endp

fact proc

cmp ax,01 ;if n=1, fact=1 else fact=n*fact(n-1) je exit push axdec ax ;n-1call fact ;fact(n-1) pop axmul res ;n*fact(n-1)mov res,ax ;res=factorialret

exit:mov res,01

retfact endp

main:mov ax,@datamov ds,axmov ax,num ;ax=ncall factmov al,byte ptr res+1 ;convert msb of result to asciicall hex_ascmov ascres,dh

mov ascres+1,dlmov al,byte ptr res ;convert lsb of result to asciicall hex_ascmov ascres+2,dhmov ascres+3,dlmov ah,09hmov dx,offset msg ;display msgint 21hmov ah,4ch ;exitint 21halign 16

end main

;13. Write an 8086 alp to rename a file,if it exists,using DOS interrupt.; Otherwise display an error message.

name rename_file page 60,80

title program to rename a file using DOS function 56h.model small

Page 15: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 15/22

.stack 64

.dataold db 'bubsort.asm',0new db 'bubble.asm',0sucmsg db 'bubsort.asm renamed as bubble.asm','$'

failmsg db 'Error! bubsort.asm could not be renamed','$'.codemain:

mov ax,@datamov ds,axmov es,axlea dx,old ;ds:dx points to the ASCIIZ string 'bubsort.asm',0lea di,new ;es:di points to the ASCIIZ string 'bubble.asm',0mov ah,56h ;DOS function 56h is used for renamingint 21h jc error ;if there is an error carry flag is set

lea dx,sucmsg jmp displayerror:

lea dx,failmsgdisplay:

mov ah,09hint 21hmov ah,4chint 21h

end main

;14. Write an 8086 alp to search for a given 8 bit field using linear ; search in an array of records with 2 fields.The searchkey is the first; byte of the record.Message should be displayed on CRT indicating; whether the search was a success or a failure.If it is a success case,; the position of the record in the array is to be displayed.

name linear_records page 60,80

title linear search on an array of records.model small.stack 64.data

array db 55h,22h,33h,55h,45h,11h,66h,44hlen dw ($-array)/2scrkey equ 66hasc1 equ (scrkey/10h)+'0'asc2 equ (scrkey mod 10h)+'0'msgsuc db 'Record with first byte as ',asc1,asc2

db ' Found at position: '

Page 16: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 16/22

result db ?,0dh,0ah,'$'failmsg db 'Record with first byte as ',asc1,asc2

db ' Not found ',0dh,0ah,'$'.code

main:

mov ax,@datamov ds,axmov cx,lenmov bx,0mov al,scrkey

again:cmp al,array[bx] je sucmsginc bxinc bxloop again

failure:lea dx,failmsg jmp display

sucmsg:ror bx,1inc bx ;position=(bx/2)+1add bl,'0'mov result,bllea dx,msgsuc

display:mov ah,09hint 21hmov ah,4chint 21h

end main

;15. Write an 8086 alp to multiply two 3x3 matrices of signed 8 bit; integers.Display result using DEBUG or CODEVIEW.Assume that each; of the elements of the product matrix can be stored in 8 bits.

name matrixmul page 60,80

title 8086 alp for matrix multiplication of 3x3 matrices.model small.stack 64.data

ar1 db 2,2,2 ;row1 of array Aar2 db 2,2,2 ;row2 ,,ar3 db 2,2,2 ;row3 ,, bc1 db 1,1,1 ;column1 of array B

Page 17: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 17/22

 bc2 db 1,1,1 ;column2 ,, bc3 db 1,1,1 ;column3 ,,c db 9 dup(?) ;result matrixl2 db ?l1 db ?

.codemain:mov ax,@datamov ds,axmov es,axmov bp,0mov l2,3lea si,ar1

rep2:lea di,bc1mov l1,3

rep1:call matmulmov ds:c[bp],dlinc bpadd di,3dec l1 jnz rep1add si,3dec l2 jnz rep2int 3

matmul procmov cx,3mov bx,0mov dl,0

again:mov al,[si][bx]imul byte ptr [di][bx]add dl,alinc bxloop againret

matmul endp

align 16end main

;16. Write an 8086 alp to compute nCr,given n and r,using recursion.; Dislpay result using DEBUG.

Page 18: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 18/22

name nCr  page 60,80

title computation of nCr using recursion.model small.stack 64

.datan db 4r db 2res db ?

.codemain:

mov ax,@datamov ds,axmov al,nmov bl,r call ncr 

int 3

ncr proccmp al,bl ;if n=r then ncr=1 je p8cmp bl,0 ;if r=0 then ncr=1 je p8cmp bl,1 ;if r=1 then ncr=n je p10dec al ;n-1cmp bl,al ;if r=n-1 then ncr=n

 je p9 push ax ;(n-1)Cr  push bx ;call ncr ; pop bx pop axdec bl ; push ax ; push bx ;call ncr ;(n-1)C(r-1) pop bx pop axret

 p8: inc resret

 p9: inc res p10: add res,al

retalign 16

Page 19: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 19/22

ncr endpend main

;17. Write an 8086 alp to read a string of 8 characters on screen at(x1,y1); and display the same at (x2,y2) using BIOS interrupts.

name movestring page 60,80

title to move a string of 8 chars on CRT from location (15,25) to (18,35).model small.stack 64.data

str db 'ABCDEFGH'oldrow db 15oldcol db 25newrow db 18

newcol db 35.codemain:

mov ax,@datamov ds,axmov bh,0 ;bh=page 0mov si,0mov dh,oldrowmov dl,oldcol

repeat:mov ah,02h ;set cursor position at (dh,dl)

int 10hmov al,str[si]mov bl,07hmov cx,1mov ah,09hint 10hinc dlinc sicmp si,08 jl repeatmov si,08

again:call movchar inc oldcolinc newcoldec si jnz againmov ah,4chint 21h

Page 20: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 20/22

movchar procmov dh,oldrowmov dl,oldcolmov ah,02hint 10h

mov ah,08h ;to read a char and its attributeint 10hmov bl,ah ;bl=attribute byte(07h)mov dh,newrowmov dl,newcolmov ah,02h ;set cursor position at (dh,dl)int 10hmov ah,09hmov cx,1int 10hret

movchar endpend main

;18. Write an 8086 alp which checks whether the printer is online.If it; is online,print a message on the printer using DOS interrupt,else; display printer status on CRT.

name printmsg page 60,80

title program to send a message to printer .model small

.stack 64.datamsg db 'If this is Printed on paper',0dh,0ah

db 'Then Program is Working',0dh,0ahlen equ $-msgerrmsg db 'Error! Printer is not connected or switched off',0dh,0ah,'$'

.codemain:

mov ax,@datamov ds,axmov ah,02h ;get printer statusmov dx,0 ;printer 0int 17h ;returns with ah=statusrol ah,01 ;if ah7=1 then printer is ready | mov ah7 to carry flag jc online

offline:lea dx,errmsgmov ah,09h ;displays errmsgint 21h

Page 21: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 21/22

jmp exitonline:

mov cx,lenmov si,00hmov ah,05h ;prints the char in dl on printer 

again:mov dl,msg[si]int 21hinc siloop again ;dec cx,until cx=0

exit:mov ah,4chint 21h

end main

;19. Write an 8086 alp to display the command line parameters,and the total

; length of the parameters using DOS interrupts.

name commdlinepara page 60,80

title to display command line parameters.model small.stack 64.data

hexcode db '0123456789abcdef'msg db 'Total length of parameters (in Hex) is:'len db ?,?,0dh,0ah,'The parameters are: $'

.codehex_asc procmov dl,10hmov ah,0mov bx,0div dlmov bl,almov dh,hexcode[bx]mov bl,ahmov dl,hexcode[bx]ret

hex_asc endpmain:

mov bx,80hmov cl,[bx]mov ax,@datamov ds,axmov al,clcall hex_asc

Page 22: 8086.doc

7/29/2019 8086.doc

http://slidepdf.com/reader/full/8086doc 22/22

mov len,dhmov len+1,dllea dx,msgmov ah,09hint 21h

mov ah,62h ;returns with bx=segment address of PSPint 21hmov ds,bxmov dx,81h ;[starting from 81h in the PSP the cmd line parametersmov bx,dx ; are stored] | bx=81h or bl=81h |add bl,cl ;81h+(length of cmd line parameters)mov byte ptr[bx],'$' ;mov '$' at the end of cmd line parametersmov ah,09hint 21h ;displays the cmd line parameters pointed by dxmov ah,4ch ;exitint 21h

end main