出错处:
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
出错句为:
mov al, codes[dh] ;输出显示
原因分析:codes为一个db数组,这里要访问codes中第dh个数字,应该使用di或者si当做数组下标。
解决:dh只有八位,di为十六位,为了设法将dx赋值给di,应该使dx整体值等于其高八位dh:
mov dl, dh
xor dh, dh
mov di, dx