汇编语言试题那个对???
对字单元BUF的内容加1的运算:我觉得第一个不对,但是为什么老师选第二个不对1.movbx,offsetBUFincwordprt[bx]2.movbx,BUFincwo...
对字单元BUF的内容加1的运算:我觉得第一个不对,但是为什么老师选第二个不对
1.mov bx,offset BUF
inc word prt[bx]
2.mov bx,BUF
inc word ptr[bx]
为什么???? 展开
1.mov bx,offset BUF
inc word prt[bx]
2.mov bx,BUF
inc word ptr[bx]
为什么???? 展开
展开全部
第二个是错误的。
比如buf中的内容是0001h,地址是2000h,那么我们应该是让0001h+1变成0002h。
第一种方法,将buf的偏移地址2000h送bx,inc指令的操作对象是[bx],也就是把bx中的值2000h当做地址,到内存中去找到这个单元,并将里面的内容增一。这样刚好找到buf的内容,达到了目的。
第二种方法,是把buf的内容0001h送bx,inc操作对象是[bx],这样就把0001h当做了地址,很显然 是不对的。
出现这个问题的主要原因是你对寄存器间接寻址理解错误。
寄存器外面加上中括号,就代表着将寄存器的内容当做地址,从而找到内存中的某个单元。
第二种方法修改一下,这样就是正确的了:
mov bx,BUF
inc bx
比如buf中的内容是0001h,地址是2000h,那么我们应该是让0001h+1变成0002h。
第一种方法,将buf的偏移地址2000h送bx,inc指令的操作对象是[bx],也就是把bx中的值2000h当做地址,到内存中去找到这个单元,并将里面的内容增一。这样刚好找到buf的内容,达到了目的。
第二种方法,是把buf的内容0001h送bx,inc操作对象是[bx],这样就把0001h当做了地址,很显然 是不对的。
出现这个问题的主要原因是你对寄存器间接寻址理解错误。
寄存器外面加上中括号,就代表着将寄存器的内容当做地址,从而找到内存中的某个单元。
第二种方法修改一下,这样就是正确的了:
mov bx,BUF
inc bx
展开全部
第一个对 :首先将地址给了BX, 然后对指向BX地址的单元+1;
第二个错 :首先将地址的值给了BX, 然后对指向该值的地址单元+1,显然已不是对BUF指向的地址+1
第二个错 :首先将地址的值给了BX, 然后对指向该值的地址单元+1,显然已不是对BUF指向的地址+1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
BUF是偏移地址,offset是编译是计算,也就是说是取得变量的地址。比如buf的偏移地址是1234h,那么mov ax,offset buf这条指令在编译后就变成mov ax,1234h。
追问
你还是没回答的,他要求buf的内容,不是地址加1,MOV BX,OFFSET BUF是BUF的地址传给bx
INC WORD PRT [BX]就是地址加1了
第二个,mov BX,BUF 是内容传给BX INC WORDP PTR[BX] 内容加1了,所以不对的是第一个而不是第二个。 是不是,,,,,,,,,,
追答
恩,我觉得是第二个对。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询