已知 (DS)=4000H,(AX)=2060H,(BX)=3000H, (SI)=2060H,(43000H)=0A006H?
- 用两种以上的方法实现存储单元3000H内容与4000H内容互换。已知(DS:3000H)=7963H,(DS:4000H)=F156H
- 有一道微机原理的题,求高手解答!
- 汇编语言的问题,麻烦高手解答~~~
- 求详解啊。汇编算物理地址啊。很急很急!

用两种以上的方法实现存储单元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
