这篇文章主要为大家介绍了汇编语言实现功能,使用用循环累加来实现乘法,文中通过几个问题实例分析,来为大家进行详细讲解,有需要的朋友可以借鉴参考下,希望能够有所帮助
问题1:编程计算2的2次方,结果存在ax中
分析:用2+2实现
assume cs:code
code segment
mov ax,2
add ax,ax
;实现程序的返回
mov ax,4c00h
int 21h
code ends
end
问题2:编程实现2的12次方
分析:用loop实现
assume cs:code
code segment
mov ax,2
mov cx,11 ;设置循环次数,只需相加11次
s:add ax,ax
loop s
mov ax,4c00h
int 21h
code ends
end
问题3:编程实现123*236,结果存在ax中
分析:用236相加123次的计算次数比较少,节约计算资源
assume cs:code
code segment
mov ax,236
mov cx,122
s:add ax,ax
loop s
mov ax,4c00h
int 21h
code ends
end
问题4:计算ffff:0006单元中的数乘以3,结果存储在dx中
分析:
1、判断数据是否能够存储
因为内存单元中存储的是字节型数据,范围在0~255之间,乘上8之后不会大于16位dx寄存器的存储范围0~65535
2、判断数据相加是否能够位数相同
内存单元是字节单元,如果用寄存器直接相加,数据的长度不一样,所以需要将寄存器变成8位,则只需要将高8位设置为0,用低8位相加即可
assume cs:code
code segment
;设置地址指向为ffff:0006
mov ax,0ffffh ;字母开头的常量前面需要加0
mov ds,ax
mov bx,6 ;ds:bx则为数据的指向
mov al,ds:[bx]
mov ah,0
mov dx,0 ;初始化寄存器中的内容
mov cx,3 ;因为不是自身相加,所以需要3次
s:add dx,ax
loop s
mov ax,4c00h
int 21h ;程序返回
code ends
end
问题5:计算ffff:0~ffff:b单元中的数据的和,结果存储在dx中
分析:
1、运算的结果是否超出寄存器的范围
12个字节型数据的相加,结果不会超过65535
2、能否直接相加dx中的数据
8位的数据不能直接相加到16位的寄存器中,如果用低8位进行相加,结果可能会超出8位存储的范围,所以只能先将数据存放到16位的寄存器中,在与dx相加
assume cs:code
code segment
mov ax,0ffffh
mov ds,ax
mov bx,0 ;ds:bx指向ffff:0
mov dx,0
mov cx,12 ;12次到ffff:b
s: mov al,ds:[bx]
mov ah,0
add dx,ax ;利用ax进行相同位数的相加
inc bx ;向后移动一个单元
loop s
mov ax,4c00h
int 21h
code ends
end
问题6:计算data段中第一组数据的3次方,结果保存在后面一组的dword单元中
分析:
1、需要利用一个子程序包装出计算的功能
2、同时需要两个寄存器分别保存和修改其中的内容
assume cs:code,ds:data
data segment
dw 1,2,3,4,5,6,7,8
dw 8 dup(0)
data ends
code segment
start: mov ax data
mov ds,ax
mov si,0 ;ds:si指向第一组word单元
mov di,16 ;ds:di指向第二组dword单元
mov cx,8
s: mov bx,ds:[si]
call cube
mov ds:[di],ax ;计算的结果低16位保存在ax中
mov ds:[di+2],dx ;计算的结果高16位保存在dx中
add si,2 ;ds:si指向下一个word单元
add di,4 ;ds:di指向下一个dword单元
loop s
mov ax,4c00h
int 21h
cude: mov ax,bx
mul bx
mul bx
ret
code ends
end start
以上就是汇编语言功能用循环累加实现乘法的详细内容,更多关于汇编语言循环累加实现乘法的资料请关注编程学习网其它相关文章!
沃梦达教程
本文标题为:汇编语言功能用循环累加实现乘法


猜你喜欢
- Swift超详细讲解指针 2023-07-08
- R语言绘图数据可视化pie chart饼图 2022-12-10
- Ruby 迭代器知识汇总 2023-07-23
- R语言关于二项分布知识点总结 2022-11-30
- Ruby的字符串与数组求最大值的相关问题讨论 2023-07-22
- Go Web开发进阶实战(gin框架) 2023-09-06
- Ruby on Rails在Ping ++ 平台实现支付 2023-07-22
- R语言-如何切换科学计数法和更换小数点位数 2022-11-23
- Golang http.Client设置超时 2023-09-05
- 汇编语言程序设计之根据输入改变屏幕颜色的代码 2023-07-06