回 帖 发 新 帖 刷新版面

主题:有些小问题

在看“段内带立即数的返回指令”的时候,书上的例子有点不明白
RET 4 
设在执行上面的指令前SP=B67EH,在执行后SP=B684H
这里为什么SP=B684H是这个值?我以为是SP+4=B682H,不知道怎么不是?
希望高手帮忙解答!

还有一个问题,就是16进制数转换为对应的ASCII思路我不明白,也就是转换的方法我不太明白,麻烦说一下

谢谢!

回复列表 (共3个回复)

沙发

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语言改写为汇编的把~ 

板凳

有点不明白,为什么加0x37,为什么又加'0'?

3 楼

情况1:0-9转化为'0'-'9'
情况2:10-15转化为'A'-'E'
情况1: '0'-0='0';所以加'0'
情况2: 'A'-10=0x41 - 0xa = 0x37
(字符'A'的ASCII码是0x41)

我来回复

您尚未登录,请登录后再回复。点此登录或注册