汇编语言的除法计算
除法运算相关知识
- 被除数分为32位和16位,分别放在ax,dx或ax中
- 被除数32位:在ax和dx中存放,ax存放低16位,dx存放高16位,对应除数一定为16位
- 被除数16位:在ax中存放,对应除数为8位
- 结果的存储:32位 / 16位 => ax(商)…dx(余数)
- 结果的存储:16位 / 8位 => al(商)…ah(余数)
计算100001/100
assume cs:code code segment ;被除数:由于100001>65535 超过了16位,因此不能用16位寄存器存放 ; 需要用两个16位寄存器(共32位)来联合存放 ;除数:100小于16位,可以在8位寄存器中存放,但是因为被除数是 ; 32位的,所以除数要用一个16位寄存器存放 ; 32位 / 16位 => ax商...dx余数 ;被除数要用dx存放高16位,ax存放低16位 start: mov dx,1 ; dx高十六位 存放0001h; ax低十六位,存放86a1h mov ax,86a1h ;(dx)*10000h+ax=100001 mov bx,100 div bx ; 结果:ax存放商,dx存放余数 ;ax=03EB dx=0001 mov ax,4c00h int 21h code ends end start
计算1001/100
assume cs:code code segment ;被除数:由于256< 1001 <65535 小于16位,高于8位,可以用16位寄存器存放 ;除数:100<256 小于8位,可以在8位寄存器中存放,但是因为被除数是 ; 16位的,所以除数要用一个8位寄存器存放 ; 16位 / 8位 => al商...ah余数 ;被除数:默认在ax寄存器中存放 start: mov ax,03e9h ;ax存放被除数16位 mov bl,0064h ;bl 8位寄存器存放8位除数 div bl ; 结果:al存放商,ah存放余数 ;al=0A ah=01 -> ax=010A mov ax,4c00h int 21h code ends end start
本文来自博客园,作者:hugeYlh,转载请注明原文链接:https://www.cnblogs.com/helloylh/p/17209725.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)