1. 首页 > 游戏

已知 (DS)=4000H,(AX)=2060H,(BX)=3000H, (SI)=2060H,(43000H)=0A006H?

已知 (DS)=4000H,(AX)=2060H,(BX)=3000H, (SI)=2060H,(43000H)=0A006H?

用两种以上的方法实现存储单元3000H内容与4000H内容互换。已知(DS:3000H)=7963H,(DS:4000H)=F156H

(1)

mov ax,[3000H]

xchg ax,[4000H]

mov [3000H],ax

(2)

push [3000H]

push [4000H]

pop [3000H]

pop [4000H]

有一道微机原理的题,求高手解答!

MOV AL,A ;AL=41H

MOV DX,C ;DX=1234H

XCHG DL,A ;DL=41H

MOV BX,OFFSET B ;BX=0002H

MOV CX,3[BX] ;CX='UP'=5550H

LEA BX,D ;BX=000EH

LES DI,E ;ES=1200H

LDS SI,E ;SI=459AH

汇编语言的问题,麻烦高手解答~~~

⑴立即数寻址 2000送给AL 2000H直接包含在代码段中

⑵直接寻址

EA(物理地址)=30000H(段值)+2000H(偏移地址)

=32000H

该指令EA为32000H的存储单元中的内容送给AX;

⑶寄存器寻址 将BX中的内容送给AX 执行后

(AX)=0038H;

⑷寄存器的间接寻址

EA(物理地址)=30000H(基址使用BX,默认段值在DS中)+00389(偏移地址)=30038H

⑸寄存器相对寻址

EA=30000H(默认段值在DS中)+0038(偏移地址)

+30H(位移量)=30068H

⑹基址加变址寻址

EA=40000H(基址使用BP,段值默认为SS)+0019H+0012H

=4002BH

偏移地址 =BP+SI=0019H+0012H=002BH

⑺基址加变址的相对寻址

EA=30000H(默认段值在DS中)+0038H+0012H+10H

=3005AH

偏移地址=0038H+0012H+10H=005A

⑻带段跨越前缀的寄存器的间接寻址(段值在指定的ES中)

EA=35000H(段值指定ES中内容)+0038H

偏移地址=0038H

⑼直接寻址 (与⑵题寻址方式一样,变量代表一个偏移地址)

EA=30000H+0200H(DATA的值)

偏移地址=0200H

⑽带段跨越前缀的寄存器的间接寻址

EA=35000H+0038

⑴立即数寻址 ⑵寄存器寻址 ⑶直接寻址

⑷寄存器寻址 ⑸寄存器的间接寻址

⑹寄存器相对寻址

⑴寄存器相对寻址 EA=35F00H+0900H+06H=4DF06H

⑵直接寻址 EA=15F00H+0900H=2DF00H

⑶带段跨越前缀的基址加变址相对寻址

EA=25F00H+0670H+1001H=2C570H

⑷基址加变址的相对寻址

EA=15F00H+0670H+00B0H=16620H

累死了 !!!

求详解啊。汇编算物理地址啊。很急很急!

1) MOV AX, ES:[1000H] AX=9ABCH 地址:31000H

算法:ES*10H+1000H 声明的段寄存器ES

2) MOV AX, [BX] AX=3412H 地址:21000H

算法:DS*10H+BX 默认段寄存器DS

3) MOV AX, [BX][SI] AX= ? 地址:21001H

算法:DS*10H+BX+SI 默认段寄存器DS

这道题是不是你哪里敲错了,你题中没有这个21001H 地址

4) MOV AX,[BP+DI] AX=9A78H 地址:41002H

算法: SS*10H+BP+DI 默认段寄存器SS

方括号里面代表地址,比如 mov ax,[bx] 就等于 mov ax,[1000h],冒号代表段前缀,冒号前面的是段寄存器,将以指明的段寄存器寻址,段寄存器 * 10H + 后面的地址 即是物理地址,如果没有指明段前缀,将以默认的段寄存器寻址,BX,SI,DI 这3个寄存器默认的段寄存器是 DS,BP的默认段寄存器是SS