预备知识
在博客 汇编指令:使用汇编指令计算2的8次方 中使用汇编指令进行计算的,太不可科学了,是用来熟悉汇编 练习指令滴。这次我们用真正的汇编语言进行编程来计算2的8次方。
在本程序中,没有直接的数学库什么之类的快捷算法,只有 笨拙的累加,循环的进行累加,循环的功能还是有的,计算机最擅长的当然是循环了。
在本程序中,会用到loop 循环指令,mov 传送指令 ,将寄存器内容送到内存单元中...。如果看不懂请看书去。
汇编程序编写格式,编写指令段的格式
;汇编计算 2的8 次方,将计算结果放到0020:0的连续地址上。
assume cs:code ;标明code 为指令段和cs段寄存关联
code segment ;segment 和 end 成对出现 定义一个段
;汇编代码...
mov ax,4c00h ;这2条语句实现的功能是程序的返回,放在程序末尾
int 21h
code ends
end ;汇编程序结束标志
代码展示
;汇编计算 2的8 次方,将计算结果放到0020:0的连续地址上。
assume cs:code ;标明code 为指令段和cs段寄存关联
code segment ;segment 和 end 成对出现 定义一个段
mov ax,0020h
mov ds,ax
mov ax,2 ;初始化值为2
mov cx,7 ;cx控制 loop 循环指令 执行次数 7次
s:
add ax,ax ;对ax 进行累加 2+2 = 2^2 = 4, 4+4=2^3 ...
loop s
mov ds:[0],ax ;将计算结果值放到0020:0内存单元
mov ax,4c00h ;这2条语句实现的功能是程序的返回,放在程序末尾
int 21h
code ends
end ;汇编程序结束标志
运行结果
顺便说下汇编源程序的编译、连接、和调试。
汇编源程序是通过masm.exe 进行编译,通过 link.exe 将 obj文件进行连接,然后生成 .exe可执行文件。
调试可以用t命令 一步一步执行 程序,可以 g命令 直接将程序执行完。
结果可以看到懂么,0020:0000 内存单元值为0,0020:0001内存单元 是01 ,高位存高字节低位存低字节,2个连续内存单元的值为0100H 16进制转出10进制就是 256!