I don't know if you can use this in assembler, but maybe it helps:
https://superuser.com/questions/994185/where-does-powercfg-get-battery-health-information-and-why-isnt-it-in-wmi[
^]
// update:
You could call the command "powercfg /batteryreport" under Windows. This creates a file "battery-report.html". This file could be opened and the desired information could be read out. Why is the solution desired in assembler? In C, this could be done with a few lines of code. You can also instruct a C compiler to generate assembler if this is really necessary.
You can start a program with CreateProcess() and wait for its end with WaitForSingleObject().
https://stackoverflow.com/questions/29250515/assembly-32-bit-calling-a-program-from-another-program