;Program to read the battery level of the HP 200LX [org 0x0100] [bits 16] [SEGMENT .text] mov si,main call dispstring mov ax,6000h int 15h ;Get main battery level call dispv mov si,backup call dispstring mov ax,6001h int 15h call dispv int 20h ;Exit to DOS dispv: mov cx,1Bh mul cx add ax,622h xor dx,dx mov bx,1000 div bx push dx add al,'0' call outchar mov al,'.' call outchar pop ax call dispax mov si,volt jmp dispstring dispax: ;Modified. To make general routine, change back to mov bx,10000 mov bx,100 dispax_loop: xor dx,dx div bx push dx add al,'0' push bx call outchar pop ax xor dx,dx mov cx,10 div cx or ax,ax mov bx,ax pop ax jnz dispax_loop ret dispstring: lodsb or al,al jz dispstring_exit call outchar jmp dispstring dispstring_exit: ret outchar: xor bh,bh mov ah,0Eh int 10h ret [SEGMENT .data] main db "Main battery: ",0x00 backup db "Backup battery: ",0x00 volt db " volts",0x0D,0x0A,0x00 [SEGMENT .bss]