. : : 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