初学汇编,用xlat指令编写了一段小写换成大写的代码。求教
- Assembly code
include io32.inc.data sentc byte 'hello' tab byte 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.codestart: mov ecx,lengthof sentc mov esi,offset sentc mov ebx,offset tab again: mov al,[esi] xlat call dispc add esi,1 loop again call dispcrlf ;换行 call disprd exit 0 end start
没得显示,不知为何?
[解决办法]
切换到DOS实地址模式试一试吧。
[解决办法]
小写字母a的ASCII码是61H,xlat执行的是al=ds:[bx+al]
所以应该在
mov al,[esi]
xlat
之间加上一条
sub al,61H
[解决办法]
楼上细心