如何找到命令地址?

How to find commands addresses?

我是汇编编程的初学者,在这个问题上遇到了一些问题。所以下面命令的地址由 CS:IP 寄存器的内容定义。如果CS等于0750h,IP等于047Bh,找到所有命令的地址。假设所有命令的大小都是 3 个字节。

我发现地址等于segment * 10h + offset。这意味着 0750h * 10h + 047Bh = 797Bh。之后为了找到每个命令的地址,我只是将 3 添加到 797Bh?我说得对吗?

start:

mov ax, data
mov ds, ax

mov al,3Fh
mov ah,30h
cmp al,ah  

jl p1

add ah,al
sub ah,30h   

p1:
add al,ah
sub al,30h

mov ax, 4c00h
int 21h    
ends

It's given that all the commands have a size of 3 bytes

这肯定是假的。往下看就知道了。

CS:IP = 0750h:047Bh对应线性地址0000797Bh。

0000797B mov ax, data   3 bytes : opc + word immediate
0000797E mov ds, ax     2 bytes : opc + modr/m

00007980 mov al, 3Fh    2 bytes : opc + byte immediate
00007982 mov ah, 30h    2 bytes : opc + byte immediate
00007984 cmp al, ah     2 bytes : opc + modr/m

00007986 jl  p1         2 bytes : opc + byte displacement

00007988 add ah, al     2 bytes : opc + modr/m
0000798A sub ah, 30h    3 bytes : opc + modr/m + byte immediate

         p1:
0000798D add al, ah     2 bytes : opc + modr/m
0000798F sub al, 30h    2 bytes : opc + byte immediate

00007991 mov ax, 4c00h  3 bytes : opc + word immediate
00007994 int 21h        2 bytes : opc + byte immediate