abb TITLE D2H.ASM ;===== Konverterar ett inmatat decimalt tal till hexadecimal ;===== samt skriver ut det p† sk„rmen. ;======================================================================== INCLUDE CONV.MAC INCLUDE SCREEN.MAC INCLUDE KEYB.MAC ;------------------------------------------------------------------------ CSEG SEGMENT ASSUME CS:CSEG,DS:CSEG ORG 100h start: jmp begin buffer db 7 dup (0) par_flag db 0 ;----------------------------------------------------------------------- main PROC NEAR call Param_Read ;Check if parameters on comm. line jcxz get_going jmp Quit ;Quit if error in input Get_going: cmp par_flag,1 jz no_msg Print 'Converts Decimal to Hexadecimal, exits' cr_lf no_msg: cr_lf next_inp: cmp par_flag,1 jz not_empty Print 'Decimal value: ' get_dec buffer ;Get binary input from keyb cmp byte ptr[buffer+1],0 ;No value entered? jnz not_empty jmp Quit not_empty: dec2hex buffer ;Convert to HEX cmp par_flag,1 jz no_tab tab 35 no_tab: Print 'Hex value = ' wr_wrd2 cmp par_flag,1 jz Quit cr_lf jmp next_inp Quit: cr_lf ret main ENDP ;------------------------------------------------------------------------- Param_Read PROC NEAR xor cx,cx cmp byte ptr ds:[80h],0 jnz cont jmp ready cont: mov par_flag,1 xor bx,bx mov si,081h Skip_spaces: Inc si cmp byte ptr[si],020h jz Skip_Spaces mov di,OFFSET buffer next_byte: mov dl,[si] cmp dl,0dh jz ready cmp dl,020h jnz no_spc jmp chk_end no_spc: cmp dl,'0' jl Error cmp dl,'9' jg Error inc bx ;Max 5 characters... cmp bx,06h jz ready mov [di],dl inc di inc si jmp next_byte Error: Print 'Wrong format in input, Aborted' mov cx,0ffffh ready: ret chk_end: more_spc: inc si cmp byte ptr[si],020h jz more_spc cmp byte ptr[si],0dh jnz Error jmp ready Param_Read ENDP ;------------------------------------------------------------------------- begin: call main ret CSEG ENDS END start . 0