指令"mov bx,[si]"的源操作数来自寄存器SI.
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/15 10:30:31
第一句,AL放到BUF+di里,就是把13H放到BUF的第di个单元里buf相当于数组,di相当于索引第二句,DW1+bx+si单元开始的字放到AX里,DW1[bx+si]同上第三句,AX放到BUF开
1.立即数寻址2.直接寻址3.变址寻址4.相对变址寻址
(1)movbx,[bx+si+2]pw=ds*16+bx+si+2(2)mov5[bp],axpw=ss*16+bp+5(3)inc[2000h]pw=ds*16+2000h(4)movdl,es:
movbx,5[si]执行后bx是1234h,是把计算后得到地址的值给bx(1205h,1206h,共一个字的值)leabx,5[si]执行后bx是1205h,是把地址赋给bx
VAR是内存变量,[SI]是源变址寄存器,OFFSET是取偏移量……你觉得这三个能放一起吗?
表示的意思是一样的都是取偏移地址,就是OFFSET是伪指令,编译时完成,LEA是指令,CPU运行时完成取偏移地址.PS:LEA与OFFSET区别:1、LEA是汇编指令,对应一个机器码,OFFSET是伪
错误,offset是用在计算标号偏移,不是用在内存地址.
按你的代码理解,你是要完成100001/100的过程,在被除数为双字时,DIV指令执行后,AX里存放商,DX里存放余数,1000001/100的余数确实是1,所以DX的值是对的.而商按十进制是1000
MOVAX,0F0H;0F0H送入AXMOVBX,5678H;5678H送入BXANDBX,AX;BX的值和AX的值进行与运算的结果070H存入BXSHLAX,1;AX的值右移一位后的结果1E0H存入
第一个:原操作数的物理地址=DS*10H+BX+10H,把2050赋值;第二个物理地址=DS*10H+SI
都是错的.1.MOVAH,BX--两个寄存器,不一样大.2.MOV[BX],[SI]--源、目的,不可都是存储器.3.MOVAX,[SI][DI]--SI、DI,不可合用.4.MOVBYTEPTR[B
3[BX]和2[BX+SI]是寻址方式的表示形式,3[BX]是相对寄存器寻址,2[BX+SI]是相对基址变址寻址.这两种寻址方式都是用于寻找内存操作数的,用来指定内存操作数的地址.3[BX]指示的内存
MOVAL,BXAL与BX类型不匹配MOV[1200],[SI]M指令dst与src不能同时为M(存储器操作数)MOVDS,ES不能在段R(段寄存器)之间直接传送信息MOVDS,1000H不能向段R送
错误,正确,错误...这样有意思吗...
1,相对基址变址4,CSDSESSS6,17,256256*4=10248,BOISDOS9,二进制810,物理地址11,子程序中标志寄存器、IP、CS13,25614,LIFO2、3、5、12不知
mov[bx],[bp];没有这种寻址方式,记住,源操作数和目的操作数不能同时为存储器寻址.mov[bx],20h;这条指令是正确的
这是寄存器间接寻址直接寻址是指的这样:movax,[1000h](ES:、DS:等段基址也可以加上)-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-80x86的7
[BX][SI]即[BX+SI]是寄存器相对寻址方式,DS寄存器中存放段地址,[BX][SI]中是偏移地址,DS*16+BX+SI就是数据存放的物理地址,MOVAX,[BX][SI]就是把DS*16+
不正确,原因如下MOVBX,CL操作数类型不匹配,CL是字节,BX是字MOV[BX],[3000H]源操作数和目的操作数同时为存储器不正确