问题如下所示
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset sqr ;sqr为si的起始地址
mov cx, offset sqrend-offset sqr ;此处偏移相减sqrend减去sqr处
mov ax,0
mov es,ax ;es从0开始
mov di,200h ;di从200开始
cld
rep movsb
mov word ptr es:[7ch*4],200h ;设置中断向量表
mov word ptr es:[7ch*4+2],0
mov ax,3456 ;进行3456的平方的计算
int 7ch
add ax,ax ;计算两者之和
adc dx,dx ;dx计算两者之和加上进位
mov ax,4c00h
int 21h
sqr: mul ax ;计算平方的程序,高16位放在DX中,低16位放在AX当中
iret
sqrend:nop
code ends
end start
3456的平方乘2等于23887872,我们这里看下计算的结果为0x16C8000,转换为10进制就是23887872,执行结果如下所示