关于gcc内联汇编数组寻址的小问题。

发布网友 发布时间:2022-04-20 04:16

我来回答

2个回答

热心网友 时间:2023-07-14 21:02

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

热心网友 时间:2023-07-14 21:02

JNZ
P3.2,
$
;
51
没有这条指令
JNB
P3.2,
$
;
应该用这条
低电平等待
高电平往下执行
JB
P3.2,
$
;
这条是
高电平等待
低电平往下执行
ORG
0000H
;
其实
设置中断程序这样就可以了
LJMP
MAIN
ORG
0003H
LJMP
INT
MAIN:SETB
EA
SETB
EX0
SETB
IT0
SETB
P0.0
SJMP
$
INT:
CPL
P0.0
;
其实
中断程序这样就可以了
RETI
END
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com