. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
《IBM-PC汇编语言程序设计》支持区
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
看看这题怎么做????
[待解决]
回复[
4
次 ] 点击[
810
次 ]
lijangwei
[帖 主]
[ 发表时间:2008-02-26 15:56 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:7
信誉值:9
注册日期:2007-11-01 20:06
写出执行以下计算的指令序列,其中X,Y,Z,R和W均为存放16位带符号数单元的地址:
z=(W-X)/(5*Y)*2
我的写入下:
mov ax,w
sub ax,x
cwd
idiv y
mov bl,5
idiv bl
mov bl,2
imul bl
mov z,ax
但是我觉得这样做:先除Y,再除5的误差挺大的,不知有别的方法没??请各位高手指教!
mess
[第
1
楼]
[ 回复时间:2008-02-27 10:25 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
按照公式给的正规的计算就可以吧,算出5*y的结果来作为被除数,就不会有上面的误差了。
lijangwei
[第
2
楼]
[ 回复时间:2008-02-28 15:47 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:7
信誉值:9
注册日期:2007-11-01 20:06
如果是那样的话,5*Y的结果应该是32位的,那么这样做除法的时候被除数应该是64位的,即除法的结果是32位的,再乘以2怎么存入z中????
nicholasway
[第
3
楼]
[ 回复时间:2008-04-06 01:30 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2008-03-23 09:23
mov ax,w
mov bx,x
sub w,x
imul cx,5 ;5*cx->cx
cwd
idiv cx; ax是商,dx是余数
imul ax,2
mov z,ax
我自己做的 不知道对不对 应该比楼主的程序简单
loswer
[第
4
楼]
[ 回复时间:2008-05-23 21:29 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2008-03-31 07:31
不考虑溢出
MOV AX,W
SUB AX,X
CWD
MOV BX,5
IDIV BX
IMUL Y
CWD
MOV BX,2
IDIV BX
; 以上两句可改写成 SAR AX,1
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved