《自己动手写操作系统》中的一个小疑点,大家帮忙来看看

《自己动手写操作系统》中的一个小问题,大家帮忙来看看!
;   ------------------------------------
;   显示   AL   中的数字
;   默认地:
; 数字已经存在   AL   中
; edi   始终指向要显示的下一个字符的位置
;   被改变的寄存器:
; ax,   edi
;   ------------------------------------
DispAL:
push ecx
push edx

mov ah,   0Ch ;   0000:   黑底         1100:   红字
mov dl,   al
shr al,   4
mov ecx,   2
.begin:
and al,   01111b
cmp al,   9
ja .1
add al,   '0 '
jmp .2
.1:
sub al,   0Ah
add al,   'A '
.2:
mov [gs:edi],   ax
add edi,   2

mov al,   dl
loop .begin
add edi,   2;/*这句似乎是多余的,因为循环体每次循环都给edi加上2了,这里似乎是一个错误,这样一来,edi指向的两个字节就是没有初始化的两个字节,难道是显示一个空位(空格)吗?*/

pop edx
pop ecx

ret
;   DispAL   结束-------------------------

------解决方案--------------------
哦,明白了,脑筋一时转不过弯来,呵呵。