主题:有些小问题
shujujiegou01
[专家分:1070] 发布于 2006-11-28 08:34:00
在看“段内带立即数的返回指令”的时候,书上的例子有点不明白
RET 4
设在执行上面的指令前SP=B67EH,在执行后SP=B684H
这里为什么SP=B684H是这个值?我以为是SP+4=B682H,不知道怎么不是?
希望高手帮忙解答!
还有一个问题,就是16进制数转换为对应的ASCII思路我不明白,也就是转换的方法我不太明白,麻烦说一下
谢谢!
回复列表 (共3个回复)
沙发
chenzep [专家分:3640] 发布于 2006-11-28 09:17:00
1:ret 4之后结果我也认为是SP+4=B682H,可以自己DEBUG一下.我现在不是在WINDOWS下.
2:下面是一个C的转化
unsigned char ch;
char hight; //高位
char low; //低位
低位: low = ch&0xf>9?ch&0xf+0x37:ch&0xf+'0';
高位: high = ch>>4>9?ch>>4+0x37:ch>>4+'0';
自己想一下怎么把上面的C语言改写为汇编的把~
板凳
shujujiegou01 [专家分:1070] 发布于 2006-11-28 19:26:00
有点不明白,为什么加0x37,为什么又加'0'?
3 楼
chenzep [专家分:3640] 发布于 2006-11-29 09:36:00
情况1:0-9转化为'0'-'9'
情况2:10-15转化为'A'-'E'
情况1: '0'-0='0';所以加'0'
情况2: 'A'-10=0x41 - 0xa = 0x37
(字符'A'的ASCII码是0x41)
我来回复