汇编中直接寻址与扩展寻址的区别
答案:2 悬赏:50 手机版
解决时间 2021-01-29 18:07
- 提问者网友:棒棒糖
- 2021-01-28 20:30
如题,最好能举例说明
最佳答案
- 五星知识达人网友:归鹤鸣
- 2021-01-28 21:12
(3) 直接寻址方式(DIR,Direct addressing mode)
直接寻址指令,字长二字节,它可以对存储器的起始256个地址($0000~$00FF),叫内存直接页(或内存第0页)进行访问。指令的第一个字节是操作码,第二个字节是操作数地址。在直接寻址中,CPU自动把$00作为操作数高位地址,第二个字节作为操作数的低位地址,其寻址范围为$0000~$00FF。下述指令属于DIR寻址方式。
LDA $60 //将存储单元$60中的数取至累加器A
BRSET和BRCLR是2条很特别的3字节指令,它们用直接寻址方式取得操作数,用相对寻址方式指明转移目的地址。例如:
BRCLR #3,$50, A1 //若存储单元$50的第3位=0则转至标号A1处
BRSET #3,$50, A1 //若存储单元$50的第3位=1则转至标号A1处
(4) 扩展寻址方式(EXT,Extended addressing mode)
扩展寻址指令是三字节指令,可访问存储器中的任何地址。在这种指令中,第一个字节是操作码,第二个字节是操作数的高字节地址,第三个字节是低字节地址。扩展寻址是相对于直接寻址方式而言的,其寻址范围为$0000~$FFFF,比直接寻址范围大得多。下述指令属于EXT寻址方式,因为它的地址已经超过了 DIR寻址方式的范围。
LDA $023D //将存储单元$023D中的数取至累加器A
特别说明:实际编程时,程序员不必考虑是直接寻址还是扩展寻址,汇编程序会自动识别,主要区别在于汇编产生的指令长度不一样。
直接寻址指令,字长二字节,它可以对存储器的起始256个地址($0000~$00FF),叫内存直接页(或内存第0页)进行访问。指令的第一个字节是操作码,第二个字节是操作数地址。在直接寻址中,CPU自动把$00作为操作数高位地址,第二个字节作为操作数的低位地址,其寻址范围为$0000~$00FF。下述指令属于DIR寻址方式。
LDA $60 //将存储单元$60中的数取至累加器A
BRSET和BRCLR是2条很特别的3字节指令,它们用直接寻址方式取得操作数,用相对寻址方式指明转移目的地址。例如:
BRCLR #3,$50, A1 //若存储单元$50的第3位=0则转至标号A1处
BRSET #3,$50, A1 //若存储单元$50的第3位=1则转至标号A1处
(4) 扩展寻址方式(EXT,Extended addressing mode)
扩展寻址指令是三字节指令,可访问存储器中的任何地址。在这种指令中,第一个字节是操作码,第二个字节是操作数的高字节地址,第三个字节是低字节地址。扩展寻址是相对于直接寻址方式而言的,其寻址范围为$0000~$FFFF,比直接寻址范围大得多。下述指令属于EXT寻址方式,因为它的地址已经超过了 DIR寻址方式的范围。
LDA $023D //将存储单元$023D中的数取至累加器A
特别说明:实际编程时,程序员不必考虑是直接寻址还是扩展寻址,汇编程序会自动识别,主要区别在于汇编产生的指令长度不一样。
全部回答
- 1楼网友:深街酒徒
- 2021-01-28 22:20
一、直接寻址方式 指令所要的操作数存放在内存中,在指令中直接给出该操作数的有效地址,这种寻址方式为直接寻址方式。 在通常情况下,操作数存放在数据段中,所以,其物理地址将由数据段寄存器ds和指令中给出的有效地址直接形成,但如果使用段超越前缀,那么,操作数可存放在其它段。 如 mov bx, [1234h] 二、寄存器间接寻址方式 操作数在存储器中,操作数的有效地址用si、di、bx和bp等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。 在不使用段超越前缀的情况下,有下列规定: 若有效地址用si、di和bx等之一来指定,则其缺省的段寄存器为ds; 若有效地址用bp来指定,则其缺省的段寄存器为ss(即:堆栈段)。 如 mov bx,[di]
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯