这是一段16位汇编代码的demo示例,实现16x+y,并且将结果保存在z中
assume cs:code,ds:data ;定义代码段cs和数据段ds的名称分别为code和data
data segment ;data数据段的开始
x dw 1234h ;定义x的数值
y dw 5678h ;定义y的数值
z dd ? ;用来作为存储x+y的结果
data ends ;data数据段的结束
code segment
start:
mov ax,data ;将data的地址送入到ax
mov ds,ax ;因为不能直接对段寄存器赋值,以要借助ax寄存器
mov ax,x ;将x的值送入到ax
;计算结果
mov bx,16 ;将十进制16送入bx中,对应的16进制位10h,所以这里也可以写成mov bx,10h
mul bx ;计算ax与bx的结果,最后因为会进位,所以dx此时会为0001
add ax,y ;计算ax+y的结果
;保存结果到z
mov word ptr z,ax ;将ax存入ds的高字节
mov word ptr z+2,dx ;将ax存入ds的低字节
;最后ds的结果为
mov ax,4c00h
int 21h
code ends
end start