Error:
add dh, dl ;dh为键号(0-15)
mov al, 01h
mov dx, CPORT
out dx, al
mov al, codes[dh] ;输出显示
mov dx, APORT
out dx, al
La oración de error es:
mov al, codes[dh] ;输出显示
Análisis de la razón: códigos es una matriz db, aquí para acceder al número dh-ésimo en códigos, debe usarse di o si como subíndice de la matriz.
Solución: dh tiene solo ocho dígitos y di tiene 16 dígitos. Para intentar asignar dx a di, el valor total de dx debe ser igual a su octavo dh máximo:
mov dl, dh
xor dh, dh
mov di, dx