几个简单的汇编问题~~

来源:百度知道 编辑:UC知道 时间:2024/05/23 02:24:14
本人菜鸟,初学汇编,有几个简单的问题不懂:
1、写出把首地址为table的字数组的第5个字送到DX寄存器的指令。要求使用以下几种寻子方式:
(1)寄存器间接寻址
(2)寄存器相对寻址
(3)基址变址寻址
2、写出执行以下计算的指令序列,其中X、Y、Z、W均为存放16位带符号数单元地址。
Z<--(W-X)/(5*Y)*2
3、实模式下,(DS)=1234H,(SI)=124H,(12464H)=30ABH,(12484H)=464H,以下程序段:
LEA SI,[SI] (拜托解释下,这句什么意思,想了很久~~)
MOV AX,[SI]
MOV [SI+22H],1200H
LDS SI,[SI+20H] (还有这句)
ADD AX,[SI]
执行后,(DS)=_____,(SI)=_____,(AX)=____
4、编制程序段:
(1)把标志寄存器中符号位SF置1.
(2)用一条指令把CX中的整数转变为奇数。
请高手解答,不胜感激!

1、
(1)寄存器间接寻址
lea bx,table
add bx,8
mov dx,[bx]
(2)寄存器相对寻址
lea bx,table
mov dx,[bx+8]
(3)基址变址寻址
lea bx,table
mov si,8
mov dx,[bx][si]
2、
Z<--(W-X)/(5*Y)*2
mov ax,w
sub ax,x
mov bx,2
imul bx
push dx
push ax
mov ax,5
mul y
mov bx,ax
pop ax
pop dx
div bx
mov z,ax
3、
LEA SI,[SI] (将SI所指向单元的偏移地址送给SI,即(SI)=124h)
MOV AX,[SI](将DS:SI所指向单元(12464H)的内容送给AX,即(AX)=30ABh)
MOV [SI+22H],1200H(将立即数1200H送DS:[SI+22H]所指向单元(12486H)中,即(12486H)=1200h)
LDS SI,[SI+20H] (将DS:[SI+20H]所指向单元(12484H)中的内容送给SI,即(SI)=464h;将(12486H)中的内容送给DS,即(DS)=1200H)
ADD AX,[SI] (将DS:[SIH]所指向单元(12464H)中的内容加到AX中,即(AX)=30ABH+30ABH=6157H,
执行后,(DS)=1200H,(SI)=464H,(AX)=6157H
4、
(1)把标志寄存器中符号位SF置1.
LAHF
OR AH,40H
SAHF
(2)用一条指令把CX中的整数转变为奇数。
OR CX,1