image-20220216223607499

题目如图所示,下面我们来分析。

CS=2000H, IP = 0000H这是两个16位地址线给出的地址,它们合成20位地址之后,决定了CPU在内存中读取什么指令。

形成20位地址 = CS *16 + IP,所以初始地址为20000H读取第二列之中的B8, 22, 66三个指令,

对应的汇编指令为 mov ax, 6622h

读取之后IP + 3,因为读取了三个指令,下次要读后三个。

所以下一个读取内存对应的地址为CS=2000H, IP = 0003H,合成20位位20003H,读取EA,03,00,00,10五个指令,

对应的汇编指令为 jmp 1000:3这种1000:3表示CS=1000H,IP=0003H

读取之后IP + 5,因为读取了5个指令,但是,读取命令的过程中有对IP的赋值,IP = 0003H,CS = 1000H

所以所以这次再读取指令从CS:IP = 10003H来读取,到了第一列,读取B8,00,00三个指令。

对应的汇编指令为 mov ax 0000注意H大写和小写都表示16进制后缀。

读取之后IP + 3,因为读取了3个指令。

再次读取指令要读取CS:IP = 10006H,读取8B, D8两个指令。

对应的汇编指令为 mov bx, ax也就是bx也设置成0000H,和ax相同。

读取之后IP +2,因为读取了两个指令。

再次读取指令对应的地址为CS:IP = 10008H,读取两个指令FF,E3

对应的汇编指令为 jmp bx也就是把IP 设置成bx的值 IP= 0000h

读取之后本应IP +2但是读取的是设置IP ,所以IP直接被赋值0000

这回从CS:IP = 10000H出读取,之后又到了下面,开始循环起来。

所以最后执行的汇编程序中的语句为:

image-20220216234458822