汇编语言试题那个对???
发布网友
发布时间:2023-07-17 06:14
我来回答
共3个回答
热心网友
时间:2024-11-16 21:25
第二个是错误的。
比如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
热心网友
时间:2024-11-16 21:25
第一个对 :首先将地址给了BX, 然后对指向BX地址的单元+1;
第二个错 :首先将地址的值给了BX, 然后对指向该值的地址单元+1,显然已不是对BUF指向的地址+1
热心网友
时间:2024-11-16 21:26
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了,所以不对的是第一个而不是第二个。 是不是,,,,,,,,,,
追答恩,我觉得是第二个对。