汇编语言程序设计考试题怎么做啊?
已知s0,s1,s2,s3,……sn均为各程序段的入口地址,分析下列程序段DATASSEGMENTADDRESSDWS0,S1,S2,……,SNNUMBERDB4……MO...
已知s0,s1,s2,s3,……sn均为各程序段的入口地址,分析下列程序段
DATAS SEGMENT
ADDRESS DW S0,S1,S2,……,SN
NUMBER DB 4
……
MOV BL,NUMBER
SHL,BL,1
MOV BH,0
JMP ADDRESS[BX]
试问(1)上述程序段所完成的功能是__________
(2)上述程序段执行后所转向的目标是__________ 展开
DATAS SEGMENT
ADDRESS DW S0,S1,S2,……,SN
NUMBER DB 4
……
MOV BL,NUMBER
SHL,BL,1
MOV BH,0
JMP ADDRESS[BX]
试问(1)上述程序段所完成的功能是__________
(2)上述程序段执行后所转向的目标是__________ 展开
1个回答
展开全部
(1)根据NUMBER的值,确定要跳转到哪个段执行
(2)程序跳转的目标为S4的位置;这个不同的环境应该是有区别的,X86的话偏移位是要求实际位置来确认的,不会根据大小自动计算的,所以代码里进行了SHL BL,1的乘以2的操作,换句话说就是跳转到NUMBER指定序号的段去执行
有些环境是自动计算大小的,因为BX=8,所以会跳转到S8的位置去执行。这里需要区别的是ADDRESS[BX]里的BX是相对ADDRESS的偏移,还是跟C语言里一样的数组序号,不同环境是有区别的,X86下应该是偏移
(2)程序跳转的目标为S4的位置;这个不同的环境应该是有区别的,X86的话偏移位是要求实际位置来确认的,不会根据大小自动计算的,所以代码里进行了SHL BL,1的乘以2的操作,换句话说就是跳转到NUMBER指定序号的段去执行
有些环境是自动计算大小的,因为BX=8,所以会跳转到S8的位置去执行。这里需要区别的是ADDRESS[BX]里的BX是相对ADDRESS的偏移,还是跟C语言里一样的数组序号,不同环境是有区别的,X86下应该是偏移
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |