有关于一道汇编程序的问题:
这是一道关于汇编程序的问题,我实在弄不明白,所以就想请教各位;
这道题是这样子的:
有符号数0B4H与11H相乘.
其过程如下所示:
MOV AL,0B4H ; /AL=B4H
MOV BL,11H : /BL=11H
IMUL BL :/AX=0FAF4H
即最后的结果是AX=0FAF4H
按理说这个结果应该是:AX=0BF4H但是却为什么是0FAF4H?我实在不明白,老师讲课的时候也说得很含糊,所以我十分苦恼,问其他同学他们也都不知道!!!
希望各位高人能帮我解决问题!!!!
附带说一下,我是才接触汇编语言的学生,我感觉到学这门课程很吃力,我担心学不好这学期又会挂科!!
参考答案:你应该看一课本~~呵,你说的应该是0BF4,那把两个数都看做无符号数相乘的,但是,这里指令中用的是IMUL,就是带符号数相乘,所以,要把结果做带符号扩展的~~
你可以用DEBUG跟一下试试,当你用MUL指令(无符号乘法)时,得到的是0BF4,用IMUL指令时,得到的就是0FAF4了~~~呵,
刚开始学汇编,就是很困难~~呵,我也是一样~~~刚开始,你要把那些最基本的硬件情况弄清楚!!这些是基础~~~所以,建议你先看一下微机原理~~这样对学汇编有很大帮助~~~还有,一旦你掌握了一些基本的东西,比如说寄存器的用法,就往后看书,不要太在意一些细节方面的东西,有看不懂的东西,先留着,过些日子,再回头去看,就懂了~~~呵呵,我觉得这是学汇编的直理~~~呵呵,
前提是,最基本的东西你不能含糊~~~~