汇编指令:使用汇编指令计算2的8次方

预备知识

使用汇编语言经典教材 王爽老师的《汇编语言第三版》 对汇编语言进行学习。

在装完DosBox环境之后,就可以用debug模式进行汇编指令的编程了。

下面我们看下在debug模式下常用的命令:

R命令:查看、改变CPU寄存器的内容;

D命令:查看内存中的内容;

E命令:改写内存中的内容;

U命令:将内存中的机器指令翻译成汇编指令;

T命令:执行一条机器指令;

A命令:以汇编指针的格式在内存中写入一条机器指令

题目介绍

在了解这些常用命令之后,我们做道题,是教材上的。

使用下面3条指令写入2000:0开始的内存单元中,利用这3条指令计算2的8次方。

mov ax,1

add ax,ax

jmp 2000:0003

回答问题

逻辑思路:

      执行完第一步后ax= 1;

      执行完第二步后ax  = 2;

执行add 1次 2*2, 执行2次 就是2*2*2就是2的3次方 ,那么2的8次方 就 add 执行 7次

执行之前先将指令指向add语句 这样就会重复执行 add语句,用jmp 指令更改CS、IP寄存器的值,从而

控制CPU执行目标指令

下面看下 代码:

汇编指令:使用汇编指令计算2的8次方_第1张图片

敲完之后,就可执行我们写的汇编指令了,我们要先使用r指令改变 cs 和ip的指向, cs和ip是8086CPU中

2个最关键的寄存器,他们指示了CPU当前要读取指令的地址。cs为代码段寄存器ip为指针寄存器。

在任意时刻,CPU将cs:ip指向的内容当做指令执行。

r cs

2000

r ip

0

汇编指令:使用汇编指令计算2的8次方_第2张图片

现在我们就可用t指令来执行我们的汇编指令了。

思考执行命令t的执行次数?

执行 第一二步执行需 2个t那么执行第三步的t的时候实际上只是改变cs:ip的指向并没执行cs:ip指向内容的机器指令后面的7个jmp 每个需要执行2个t才能执行add方法!

所以共需要执行t 16次才能计算出2的8次方




你可能感兴趣的:(【Language_Asm】,8086CPU汇编学习)