9f9 TITLE B2H.ASM ;===== Konverterar ett inmatat bin„rt 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 18 dup (?) par_flag db 0 ;----------------------------------------------------------------------- main PROC NEAR call Param_Read jcxz get_going jmp Quit ;Quit if error Get_going: cmp par_flag,1 jz no_msg Print 'Converts Binary to Hexadecimal, exits' cr_lf no_msg: cr_lf next_inp: cmp par_flag,1 jz not_empty Print 'Binary value: ' get_bin buffer ;Get binary input from keyb cmp byte ptr[buffer+1],0 ;No value entered? jnz not_empty jmp Quit not_empty: bin2hex 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+1 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,'1' jg Error inc bx cmp bx,011h 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