Task

Express a number in decimal as a fixed-length string with leading zeros.



For example, the number   7.125   could be expressed as   00007.125.




	.model small
        .stack 1024
.data
         ;data segment is unused in this program
.code
 
start:
 
	mov ax,@code
	mov ds,ax
	mov es,ax
 
	cld              ;make lodsb, etc. auto-increment
 
	mov al, byte ptr [ds:LeadingZeroes]
	mov cl,al
	mov ch,0
	mov al,'0'			;30h
	jcxz DonePrintingLeadingZeroes  ;there are leading zeroes so we won't skip that section. This branch is not taken.
 
printLeadingZeroes:
	call PrintChar                   ;print ascii 0 to the terminal 4 times
	loop printLeadingZeroes
 
DonePrintingLeadingZeroes:	
 
	mov si, offset TestString
	call PrintString
 
	mov al, byte ptr [ds:TrailingZeroes]
	mov cl,al
	mov ch,0
	mov al,'0'			;30h
	jcxz DonePrintingTrailingZeroes	;there are none in this example so this branch is always taken
printTrailingZeroes:
	call PrintChar                  
	loop printTrailingZeroes
 
DonePrintingTrailingZeroes:
	mov ax,4C00h
	int 21h				;exit to DOS
 
TestString byte "7.125",0
 
LeadingZeroes  byte 4			;number of leading zeroes to print
TrailingZeroes byte 0			;number of trailing zeroes to print