问题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