社区
汇编语言
帖子详情
请问谁有8位/8位的除法汇编代码呢?
eeb
2007-05-18 11:11:47
请问谁有8位/8位的除法汇编代码呢?不需要求余数的。
...全文
701
16
打赏
收藏
请问谁有8位/8位的除法汇编代码呢?
请问谁有8位/8位的除法汇编代码呢?不需要求余数的。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ahjoe
2007-05-28
打赏
举报
回复
难道现在的CPU都不支持 div ?
Jerry3385
2007-05-24
打赏
举报
回复
mark
paullbm
2007-05-22
打赏
举报
回复
謝謝liangbch(宝宝)兄的賜教!!!
liangbch
2007-05-21
打赏
举报
回复
若 n1是一个8bit的数,n2也是一个8bit的数且n2不等于0,则n1/n2的商至多是一个8bit的数,我们定义n1/n2=c,则 n1=n2 * c+ r (r<n2,r是余数)
c的2进制表示为 "b7 b6 b5 b4 b3 b2 b1 b0", b0到b7为0或者1 则 c= 2^7 *b7 + 2^6 *b6 + 2^5 * b5 +.. 2^1 *b1 + 2^0 *b0
所以:n1= n2 * 2^7 *b7 + n2 * 2^6 *b6 + n2 *2^5*b5 + ...n2* 2^1 *b1 + n2* 2^0 *b0
在我的程序中,
cl: 当前商(初值为2^7,以后逐次除以2),
ch: 商
bx:除数乘以当前商的积(部分积),等于 n2* cl,初值等于 n2 *2^7,以后逐次除以2。
在循环过程中,依次将 被除数(余数)与 部分积(n2 * cl) 比较,如被除数(余数)大于部分积,则将商加上部分商 并将 余数减去部分积,直到余数小于除数为止。
paullbm
2007-05-20
打赏
举报
回复
把liangbch(宝宝)的代码转换一下就是:
=====================================
data segment
n1 db 34
n2 db 7
n3 db ? ;存放n1/n2的商
data ends
code segment
assume cs:code,ds:data
main:
mov ax,data
mov ds,ax
mov ax,0
mov bx,0
mov cx,0
mov al,n1
mov bl,n2
mov cl,7
shl bx,cl
mov cl,80h
loop1:
cmp ax,bx
jb next
sub ax,bx
add ch,cl
next:
shr bx,1
shr cl,1
cmp al,n2
jae loop1
mov n3,ch
mov ah,4ch
int 21h
code ends
end main
===============================
liangbch(宝宝)果然厉害。在下想问一下,请问这个算法是根据什么规律或公式而实现的呢?
liangbch
2007-05-20
打赏
举报
回复
当时写完后就发现这个bug了,将这段代码修改一下就好了。
原来的代码
or ax,ax
jnz loop1
修改为:
cmp al,n2
jae loop1
mengshijie_1981
2007-05-20
打赏
举报
回复
8bit/8bit除法,下面的方法就可以了,AL中存放被除数,BL中存放除数,商放在AL中。(余数在AH中,你可以不理会它)
无符号除法:
MOVZX AX,AL
DIV BL
有符号除法:
MOVSX AX,AL
IDIV BL
paullbm
2007-05-20
打赏
举报
回复
liangbch(宝宝)
我下面的代码则最多只需要8次循环(8bit需要8次循环,如果是16bit需要16次循环),没有汇编环境,写一个vc++程序,请自行修改为汇编程序。
=========================================
int div8(unsigned char n1,unsigned char n2)
{
_asm
{
mov ax,0
mov bx,0
mov cx,0
mov al,n1
mov bl,n2
shl bx,7
mov cl,80h
loop1:
cmp ax,bx
jb next
sub ax,bx
add ch,cl
next:
shr bx,1
shr cl,1
or ax,ax
jnz loop1
thisExit:
mov al,ch
}
}
int main(int argc, char* argv[])
{
unsigned char n1,n2,n3;
n1=35;
n2=7;
n3=div8(n1,n2);
printf("%d/%d=%d\n",n1,n2,n3);
return 0;
}
============================
经检验,发现当n1/n2的余数只比n2小于1时,程序会出现异常!!!
比如:
n1=34,n2=5时
商为6,余数为4
这时就会出现问题!!
eeb
2007-05-18
打赏
举报
回复
不能使用DIV指令的
paullbm
2007-05-18
打赏
举报
回复
但是據在下所知,
DIV指令要麼是16/8位的
要麼是32/16位的
這都涉及到商和余數了。。
當然,有沒有余數取決於除數和被除數的關系!!!
16/8位的完全可以把分子的高8位設為0,這樣就相當於是8/8位的了!!
eeb
2007-05-18
打赏
举报
回复
paullbm:我是初学汇编的,想要最简单的除法代码。只要8位/8位的,而且不用求余数。你能帮我写一下吗?
paullbm
2007-05-18
打赏
举报
回复
16位/8位的難道達不到你的要求嗎??
大熊猫侯佩
2007-05-18
打赏
举报
回复
循环减或我blog上由关于大整数四则运算的算法推出的算法
liangbch
2007-05-18
打赏
举报
回复
楼上的虽然算法简单,但是太慢了,如果计算 255/1,需要255次循环,我下面的代码则最多只需要8次循环(8bit需要8次循环,如果是16bit需要16次循环)
没有汇编环境,写一个vc++程序,请自行修改为汇编程序。
int div8(unsigned char n1,unsigned char n2)
{
_asm
{
mov ax,0
mov bx,0
mov cx,0
mov al,n1
mov bl,n2
shl bx,7
mov cl,80h
loop1:
cmp ax,bx
jb next
sub ax,bx
add ch,cl
next:
shr bx,1
shr cl,1
or ax,ax
jnz loop1
thisExit:
mov al,ch
}
}
int main(int argc, char* argv[])
{
unsigned char n1,n2,n3;
n1=35;
n2=7;
n3=div8(n1,n2);
printf("%d/%d=%d\n",n1,n2,n3);
return 0;
}
paullbm
2007-05-18
打赏
举报
回复
不能使用div指令?那就用循環減法!
比如 十進數100/5
100每次減去一個5,然后計數器(初始為零,也可以是商)加1,得到的差再與5比較,如果相比一直比5大,則一直循環。直到得到的差小於5或等于0則跳出循環!!
最後得到的計數器的值其實就是100/5的商(即為20)!!!
rockefeller8
2007-05-18
打赏
举报
回复
不需要余数就是整除了,用比较大小就可以了,注意中间的累加问题!其实整除完成,余数自然就知道了
使用Selenium与Python自动化抓取YouTube播放列表视频链接
网络爬虫是自动化获取网页数据的关键技术,其核心原理是模拟浏览器行为或直接发送HTTP请求来解析HTML文档。在数据采集、内容归档等场景中,自动化工具能极大提升效率。Selenium作为主流的浏览器自动化框架,通过驱动真实浏览器,能有效处理依赖JavaScript的动态页面,如YouTube的无限滚动加载。本文聚焦于利用Selenium与Python,解决YouTube播放列表链接批量抓取的实际工程问题,详细拆解了环境配置、页面行为分析、滚动加载逻辑及数据提取等关键步骤,为处理动态网页数据抓取提供了清晰的实践
Python零基础学习路线:爬虫与数据分析实战指南
从零开始掌握一门编程语言,关键是建立清晰的学习路径。Python作为入门友好且应用广泛的语言,在数据处理和自动化领域尤为突出。其核心原理在于通过简洁的语法和丰富的第三方库,快速实现数据采集、清洗与分析。技术价值体现在降低编程门槛,让非专业背景的人也能高效处理结构化数据。在实际场景中,无论是抓取公开网页信息,还是对Excel表格进行批量统计,Python都能提供完整的解决方案。本文基于一套完整的Python零基础教程,梳理了从语法基础到爬虫实践,再到数据分析可视化的系统性学习路线,帮助初学者避开盲区,用可落地
Python零基础学习路线:以项目驱动掌握爬虫与数据分析
编程学习常陷入“视频收藏即学会”的误区,真正的技能来自动手构建。Python以简洁语法成为入门首选,其学习核心在于理解变量、函数与数据结构等基础,再通过第三方库扩展能力。网络爬虫与数据分析是检验Python功底的典型场景:利用requests与BeautifulSoup采集网页数据,借助Pandas进行清洗统计,再用Matplotlib可视化呈现,形成“采集-处理-展示”的完整数据流水线。针对零基础学习者,以项目驱动方式将长教程拆解为语法基础、爬虫入门、数据分析、综合实战等阶段,能显著提升知识转化率。同时,
Python爬虫实战:合规抓取公开电影信息全流程
在数据驱动的时代,Python爬虫是从互联网中提取公开信息的重要工具。通过HTTP请求与HTML解析技术,开发者能够高效地获取结构化数据,为数据分析、趋势监测等场景提供支撑。本文将介绍爬虫的基本原理与合规边界,重点讲解requests库的请求封装、XPath与CSS选择器的解析技巧,并结合公开的电影信息接口,演示如何从零构建一个稳定运行的电影数据采集项目。文中还涵盖异常处理、反爬策略应对、CSV存储及脚本打包等工程实践,帮助读者在合法框架下掌握数据采集的核心技能,最终实现将电影列表、评分、简介等公开数据保存
Python零基础到实战:爬虫与数据分析全栈学习路径解析
Python作为一门简洁高效的编程语言,其核心价值在于能够将复杂的数据处理任务自动化。通过理解变量、函数、面向对象等编程概念,开发者可以构建脚本处理各类数据任务。在技术实现层面,Python生态提供了强大的库支持,如用于网络请求的requests、用于数据解析的BeautifulSoup,以及用于数据分析的Pandas和NumPy。这些工具的组合使得从网页抓取到数据清洗、分析、可视化的完整流程成为可能,极大地提升了数据获取与处理的效率。在应用场景上,这种能力广泛应用于市场调研、舆情监控、业务报表自动化等领域
汇编语言
21,500
社区成员
41,619
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章