社区
汇编语言
帖子详情
用汇编实现双字除以双字?8086指令集
wyyl00
2008-05-24 07:05:06
问题描述
不用附加寄存器,如何实现双字除以双字,要求得到商和余数。
不要用减法实现,因为减法有效率问题,谢谢,请教一个好的算法
...全文
295
13
打赏
收藏
用汇编实现双字除以双字?8086指令集
问题描述 不用附加寄存器,如何实现双字除以双字,要求得到商和余数。 不要用减法实现,因为减法有效率问题,谢谢,请教一个好的算法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wyyl00
2008-05-25
打赏
举报
回复
新问题,如何将一个双字转换成字符串
已经知道是除10求余数
但是双字除10怎么算?
wyyl00
2008-05-25
打赏
举报
回复
做完解决了这些问题了,谢谢帮我思考问题的朋友们
BAYNPU
2008-05-25
打赏
举报
回复
假如有一个数字是:5050/10=505,505/10=50.5,50/10=5.05,把后面的余数取出来,通过ASCII码41H或61H进行大、小写字符转换。
用户 昵称
2008-05-24
打赏
举报
回复
俺会做这样的乘法,除法不会,但是俺想应该可以用二分法来逼近,残念。
cnzdgs
2008-05-24
打赏
举报
回复
模仿用竖式计算。先用字节除以字节说明一下原理,LZ再自己考虑双字除以双字。
假设被除数为AL,除数为BL(不为0),商用AH保存,余数用AL保存:
xor ah, ah
mov bh, 1
.while (al >= bl)
shl bx, 1
.endw
.while (1)
shr bx, 1
.break .if (bh == 0)
.if (al >= bl)
add ah, bh
sub al, bl
.endif
.endw
BAYNPU
2008-05-24
打赏
举报
回复
除2 MOV CL,2
除3 MOV CL,3
除4 MOV CL,4
除5 MOV CL,5
........等等。
wyyl00
2008-05-24
打赏
举报
回复
知道啊,被除数除以除数,不见得是除以2,4,8,16,====的好用移位做的嘛
BAYNPU
2008-05-24
打赏
举报
回复
移位次数:要么是1要么是CL位,不能是2。
wyyl00
2008-05-24
打赏
举报
回复
除数不见得是2或者是2的倍数嘛
BAYNPU
2008-05-24
打赏
举报
回复
循环移位不会;逻辑左移指令SHL执行一次移位,相当于无符号数的乘2,逻辑右移指令SHR执行一位移位,相当于无符号数除以2,商在目的操作数中还有.......。
wyyl00
2008-05-24
打赏
举报
回复
已经转换成2进制了,循环移位不会。。。
BAYNPU
2008-05-24
打赏
举报
回复
先转化为2进制,然后用循环移位指令。
wyyl00
2008-05-24
打赏
举报
回复
没人帮我吗
C51
指令集
CJNE @Rn,#data,rel 3
51
汇编
语言
指令集
符号定义表 符号 含义 Rn R0~R7寄存器n=0~7 Direct 直接地址,内部数据区的地址RAM(00H~7FH) SFR(80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0 @Ri 间接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH) #data 8位常数 #data16 16位常数 Addr16 16位的目标地址 Addr11 11位的目标地址 Rel 相关地址 bit 内部数据RAM(20H~2FH),特殊功能寄存器的直接地址的位 指令介绍 指令 字节 周期 动作说明 算数运算指令 1.ADD A,Rn 1 1 将累加器与寄存器的内容相加,结果存回累加器 2.ADD A,direct 2 1 将累加器与直接地址的内容相加,结果存回累加器 3.ADD A,@Ri 1 1 将累加器与间接地址的内容相加,结果存回累加器 4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加器 5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位C相加,结果存回累加器 6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位C相加,结果存回累加器 7.ADDC A,@Ri 1 1 将累加器与间接地址的内容及进位C相加,结果存回累加器 8.ADDC A,#data 2 1 将累加器与常数及进位C相加,结果存回累加器 9.SUBB A,Rn 1 1 将累加器的值减去寄存器的值减借位C,结果存回累加器 10.SUBB A,direct 2 1 将累加器的值减直接地址的值减借位C,结果存回累加器 11.SUBB A,@Ri 1 1 将累加器的值减间接地址的值减借位C,结果存回累加器 12.SUBB A,0data 2 1 将累加器的值减常数值减借位C,结果存回累加器 13.INC A 1 1 将累加器的值加1 14.INC Rn 1 1 将寄存器的值加l 15.INC direct 2 1 将直接地址的内容加1 16.INC @Ri 1 1 将间接地址的内容加1 17.INC DPTR 1 1 数据指针寄存器值加1 说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位 18.DEC A 1 1 将累加器的值减1 19.DEC Rn 1 1 将寄存器的值减1 20.DEC direct 2 1 将直接地址的内容减1 21.DEC @Ri 1 1 将间接地址的内容减1 22.MUL AB 1 4 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器 说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。如果积大于FFH,则溢出标志位(OV)被设定为1,而进位标志位为0 23.DIV AB 1 4 将累加器的值
除以
B寄存器的值,结果的商存回累加器,余数存回B寄存器 说明:无符号的除法运算,将累加器A
除以
B寄存器的值,商存入A,余数存入B。执行本指令后,进位位(C)及溢出位(OV)被清除为0 24.DA A 1 1 将累加器A作十进制调整, 若(A) 3-0>9或(AC)=1,则(A) 3-0←(A)3-0+6 若(A) 7-4>9或 (C)=1,则(A) 7-4←(A)7-4+6 逻辑运算指令 25.ANL A,Rn 1 1 将累加器的值与寄存器的值做AND的逻辑判断,结果存回累加器 26.ANL A,direct 2 1 将累加器的值与直接地址的内容做AND的逻辑判断,结果存回累加器 27.ANL A,@Ri 1 1 将累加器的值与间接地址的内容做AND的逻辑判断,结果存回累加器 28.ANL A,#data 2 1 将累加器的值与常数做AND的逻辑判断,结果存回累加器 29.ANL direct,A 2 1 将直接地址的内容与累加器的值做AND的逻辑判断,结果存回该直接地址 30.ANL direct,#data 3 2 将直接地址的内容与常数值做AND的逻辑判断,结果存回该直接地址 31.ORL A,Rn 1 1 将累加器的值与寄存器的值做OR的逻辑判断,结果存回累加器 32.ORL A,direct 2 1 将累加器的值与直接地址的内容做OR的逻辑判断,结果存回累加器 33.ORL A,@Ri 1 1 将累加器的值与间接地址的内容做OR的逻辑判断,结果存回累加器 34.ORL A,#data 2 1 将累加器的
Dynarec:Java中的动态重新编译器
达纳雷克 Java中的实时动态重新编译器。 将二进制
汇编
代码转换为Java字节码,然后根据需要加载并执行。 包括来自C和ARM处理器的灵感的自定义
指令集
和
汇编
语言。 默认处理器为APPLEDRCx64,本文档对此进行了介绍。 指令系统 ### 32位指令 MOV Rres,#/ Rval 将val表示的值存储到寄存器Rres中 添加Rres,Rarg1,#/ Rval 将Rarg1和val的值相加并将结果存储到寄存器Rres中 SUB Rres,Rarg1,#/ Rval 从寄存器Rarg1中减去val的值,并将结果存储到寄存器Rres中 MUL Rres,Rarg1,#/ Rval 将Rarg1与val表示的值相乘,并将结果存储到寄存器Rres中 DIV Rres,Rarg1,#/ Rval 将Rarg1
除以
val表示的值,并将结果存储到寄存器Rres中 ASR Rres,Ra
8086
汇编
指令全集
原帖地址 http://blog.sina.com.cn/s/blog_71899d520102vfi5.html
8086
汇编
指令全集 学习
汇编
语言,最关键的就在于
汇编
指令集
的掌握以及计算机工作方式的理解,以下是80X86
汇编
过程中经常用到的一些
汇编
指令。 从功能分类上来说,一共可分为 一、 数据传送指令:MOV、XCHG、LEA、LDS、LES、PUSH、POP、PUSHF
【沧海拾昧】
汇编
语言:
8086
/8088常用
指令集
8086
/8088CPU常用
汇编
指令简介
常用
汇编
指令集
常用
汇编
指令集
汇编语言
21,459
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章