预祝大家国庆节玩得开心点。。。两个问题散分

W32API 2004-09-30 03:50:43
散分。。。

题目:
1。假设指令集只有加减法、移位、比较等指令而没有乘除法指令,请给出乘除法的通用运算代码;
2。请给出你认为最高效的 switch...case... 的汇编实现。

不限定描述算法所使用的指令集。。。
并请保留适当注释。避免大家因为不熟悉你的指令集而看不明白。
...全文
339 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
Areslee 2004-10-10
  • 打赏
  • 举报
回复
唉,学过小学数学的人就知道该怎么写这代码。。。
那些人问8过是因为懒罢了
这种东西真的没有意思
Rex_love_Burger 2004-10-10
  • 打赏
  • 举报
回复
学习!!
SnHnBn 2004-10-10
  • 打赏
  • 举报
回复
switch case 现有流行的C编译器尽量都用Hash表算法。
写汇编代码? 还是免了吧……
W32API 2004-10-09
  • 打赏
  • 举报
回复
楼上,你这家伙屁屁痒了哦?
乘除法的运算是因为有人就那么问我,她在 EM78 下面没有除法。。。
我自己的当然不会笨到在实现过程中使用除法去做。人家有什么指令,我们就用什么方法去做。。。
Areslee 2004-10-09
  • 打赏
  • 举报
回复
B4乱挖坑地淫,坚决不回复此类问题
:)
zhangze 2004-10-08
  • 打赏
  • 举报
回复
;switch......case的
;假设eax中为选择字
mov ebx,addr switch_table
mov ebx,[ebx+eax<<2]
jmp ebx
ret
switch_table(4字节对齐):
case0_addr
case1_addr
大熊猫侯佩 2004-10-07
  • 打赏
  • 举报
回复
偶写的乘法用的是位层面上的操作,理解难一点,但扩展很方便。
除法用的是辗转相减法,理解简单,但扩展相对难一点。
前者偶是站在计算机的立场上,所以它容易,偶难
后者偶是站在偶门人的立场上,所以它容易,偶也容易... ...

N多废话之后... ...闪先... ...-_-b
jk88811 2004-10-07
  • 打赏
  • 举报
回复
^-^我一个都看不懂呀,楼主就可怜给点分吧!
W32API 2004-10-06
  • 打赏
  • 举报
回复
实际上,作为比较通用的算法,test bit 的操作换成逻辑移位到进位标记去会更好。
alyue 2004-10-06
  • 打赏
  • 举报
回复
边学习边蹭分
dump123 2004-10-05
  • 打赏
  • 举报
回复
和星期六星期天没什么两样,别说我不爱国,我的心里就是这么觉得,我不会虚伪地说我多爱国。就算我没大家这么爱国,也是因为社会环境造就的。
dump123 2004-10-05
  • 打赏
  • 举报
回复
佛家说,沉迷不好。
你要追求到哪种程度的更好的算法?
我感觉春节的除夕最热闹,真正到了春节就觉得逊色多了。国庆节更是如此
hswxf 2004-10-05
  • 打赏
  • 举报
回复
老师好呀!放假了也整人呀!
哈哈
W32API 2004-10-04
  • 打赏
  • 举报
回复
这么急着拿分?国庆都还没过
问题是我还需要时间去看看有没有我认为更好的做法,当然,我自己已经在使用一种算法。
dump123 2004-10-04
  • 打赏
  • 举报
回复

INCLUDE ANY.ASM

什么时候给分?
大熊猫侯佩 2004-10-03
  • 打赏
  • 举报
回复
;******************
;A Kinds Production
;******************
;============================
;About MulK,IMulK,DivK,IDivK
;Work On 200410011507 At Home
;============================
data segment
aopr dw 0fffch
bopr dw 0ffch
copr dw ?
result dw ?,?
l1bit dw 1
cmpit dw 11b
l2bit01 dw 1
l2bit10 dw 2
af dw 0
bf dw 0
data ends
;****************************
stack segment stack
dw 256 dup(?)
tos label word
stack ends
;****************************
code segment
assume cs:code,ds:data
assume es:data,ss:stack

MulK macro opr1,opr2

mov ax,opr1
mov bx,opr2
sub dx,dx

mov cx,16d
lop1: test ax,l1bit
jz no
add dx,bx
jmp step1
no: add dx,0
step1: rcr dx,1
rcr ax,1
loop lop1

endm

IMulk macro opr1,opr2

mov ax,opr1
mov bx,opr2
sub dx,dx

test ax,1
jz step2
sub dx,bx
step2: sar dx,1
rcr ax,1

mov cx,15d
lop2: push ax
rcl ax,1
and ax,cmpit
cmp ax,l2bit01
jz yes01
cmp ax,l2bit10
jz yes10
jmp step3
yes01: add dx,bx
jmp step3
yes10: sub dx,bx
step3: pop ax
sar dx,1
rcr ax,1
loop lop2

mov result,ax
mov result+1,dx

endm

DivK macro opr1

mov bx,bopr
mov copr,bx
sub cx,cx
mov aopr,cx
lop3: push ax
sub ax,bopr
push dx
sbb dx,aopr
pop dx
pop ax
jb step4
inc cx
mov bx,copr
add bopr,bx
adc aopr,0
jmp lop3
step4:
sub bopr,bx
sub ax,bopr


mov aopr,ax
mov bopr,cx
endm

IDivK macro opr1,opr2


;上面是无符号除法,带符号除法只要对以上简单改进即可,详细如下:

;判断两个除数,分别置 af,bf 位
;若:af=0,bf=0,则直接计算
;af=1,bf=1,先对两除数求补,然后计算
;af=1,bf=0 or af=0,bf=1 先将负数求补,计算,然后将结果求补。

;偶实在不想写了,呵呵,打实况去... ... -_-b

endm

start:
push ds
sub ax,ax
push ax

mov ax,data
mov ds,ax
mov es,ax
mov ax,stack
mov ss,ax
mov sp,tos

;MulK aopr,bopr
;IMulK aopr,bopr

mov dx,0fch
mov ax,0fffch

DivK aopr bopr

mov ah,4ch
int 21h
code ends
;**************************
end start
wangziz 2004-10-03
  • 打赏
  • 举报
回复
up
大熊猫侯佩 2004-10-03
  • 打赏
  • 举报
回复
没有最高效,只有更高效,呵呵!

Name BranchT
;********************************
code segment
assume cs:code,ds:code

y dw 3
ym dw 1,2,3,4,5

btdo macro x,xm
mov ax,x
cmp ax,xm
jz x0do
cmp ax,xm+2
jz x1do
cmp ax,xm+4
jz x2do
cmp ax,xm+6
jz x3do
cmp ax,xm+8
jz x4do
jmp exit


x0do:
jmp exit
x1do:
jmp exit
x2do: mov bx,0ffffh
jmp exit
x3do:
jmp exit
x4do:
exit:
endm

start:
mov ax,code
mov ds,ax

btdo y,ym

mov ah,4ch
int 21h
code ends
;*******************************
end start
大熊猫侯佩 2004-10-02
  • 打赏
  • 举报
回复
to YFLK(远方来客)
32位乘除如何做呀?

偶上面写的乘法,稍加扩展可以进行任意位的乘法。
除法还没写,一直在玩暗黑,呵呵!^O^
SDFDSAC 2004-10-02
  • 打赏
  • 举报
回复
拿分走人
加载更多回复(8)

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧