求用汇编语言边编写Z ←(W*X)/(Y+6),X、Y、Z、W、R都为16位带符号数,其中Z存储商,R存储余数.
收藏:
0
点赞数:
0
评论数:
0
1个回答

这个题目怕不是教师出的吧?

如果是教师出的题,这位老师要么是不懂教学的新手,要么性格变态.

按理,“溢出”这种情况这个题目中应当被忽略.

因为:

1. 如果是Y+6溢出,那就要考虑32位除法了,问题会复杂很多倍.

2. 如果是考虑要避免除法溢出,带符号数溢出判断处理比较繁琐,要在做除法之前先求被除数的高一半的绝对值,再求除数的绝对值,比较两者,若前者大于或等于后者就不能做除法运算.这么处理太过复杂,不符合练习基本运算组合指令教学的目的.(如果是无符号数避免除法溢出相对要简单得多).

如果不考虑溢出问题,程序不难:

MOV AX, W ;取W到AX中

IMUL X ;做W*X运算,乘积在DX,AX中

MOV BX, Y ;将Y取到BX中

ADD BX, 6 ;Y+6存在BX中

IDIV BX ;做除法,商在AX中,余数在DX中

MOV Z, AX ;保存商

MOV R, DX ;保存余数

点赞数:
0
评论数:
0
关注公众号
一起学习,一起涨知识