|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 就是要努力呀 于 2020-4-2 12:27 编辑
1:
0000:0000 70 80 f0 30 ef 60 30 e2-00 80 80 12 66 20 22 60
0000:0010 62 26 e6 d6 cc 2e 3c 3b-ab ba 00 00 26 06 66 88
mov ax, 1
mov ds, ax ds = 0001
起初我也纠结为什么段地址是0001,偏移地址是0000却可以索引到0000:0010的内存地址,百度后明白了,8086cpu的外部总线是20条,内存地址就是是20位的物理地址,而8086cpu得到物理地址的办法是 段地址*16 + 偏移地址 将值代入进去发现 0000:0010 和 0001:0000得到的物理地址是同一个地址 00010
mov ax, [0000] ax = 2662
mov bx, [0001] bx = e626
mov ax, bx ax = e626
mov ax, [0000] ax = 2662
mov bx, [0002] bx = d6e6
add ax, bx ax = fd48
add ax, [0004] ax = 2c14
mov ax, 0 ax = 0000
mov al, [0002] al = 00e6
mov bx, 0 bx = 0000
mov bl, [000c] bl = 0026
add al, bl al = 000c
2:
mov ax, 6622h cs:ip = 2000:0000 20000 ax = 6622
ip + 3
jmp 0ff0:0100 cs:ip = 0ff0:0100 10000
mov ax, 2000h cs:ip = 0ff0:0100 10000 ax = 2000
ip + 3
mov ds, ax cs:ip = 0ff0:0103 10003 ds = 2000
ip + 2
mov ax, [0008] cs:ip = 0ff0:0105 10005 ax = c389
ip + 3
mov ax, [0002] cs:ip = 0ff0:0108 10008 ax = ea66
没有区别,二者在机器中都是以二进制的形式存在
ds指向的是数据段
cs:ip指向的是代码段 |
|