汇编语言如何改内存?
答案:2 悬赏:0
解决时间 2021-02-15 19:04
- 提问者网友:对着我说爱我
- 2021-02-14 19:48
汇编语言如何改内存?
最佳答案
- 二级知识专家网友:零负荷的放任
- 2021-02-14 20:07
恩,你知道在8086里地址是段地址:偏移地址
而实际地址=段地址*10h+偏移地址吧。
如果是复杂的可以这样:
debug后;
u;显示32字节的内容,这时你就能看到差不多是这样的东西:
mov ax,数字1
mov ds,ax
lea dx,数字2
mov ah,9
int 21h
mov ax,4c00h
int 21h
他还你写的程序是对应的,其中你根据原来的程序,可以看到数字1是data,数字1即为data的段地址,这样你就得到一个段地址了,
然后看到数字2那对应着msg,数字2其实表示的是偏移地址
那么h...这个字符串的地址就是=数字1:数字2
然后用:e 数字1:数字2(或者 d 数字1:数字2)来显示这个地方的东西,至于e和d表示什么,以及怎么操作,你翻一下你的汇编书的debug那一节会有。
其实你这样写那数字2一定是0000的.
而实际地址=段地址*10h+偏移地址吧。
如果是复杂的可以这样:
debug后;
u;显示32字节的内容,这时你就能看到差不多是这样的东西:
mov ax,数字1
mov ds,ax
lea dx,数字2
mov ah,9
int 21h
mov ax,4c00h
int 21h
他还你写的程序是对应的,其中你根据原来的程序,可以看到数字1是data,数字1即为data的段地址,这样你就得到一个段地址了,
然后看到数字2那对应着msg,数字2其实表示的是偏移地址
那么h...这个字符串的地址就是=数字1:数字2
然后用:e 数字1:数字2(或者 d 数字1:数字2)来显示这个地方的东西,至于e和d表示什么,以及怎么操作,你翻一下你的汇编书的debug那一节会有。
其实你这样写那数字2一定是0000的.
全部回答
- 1楼网友:高冷不撩人
- 2021-02-14 21:03
内存到内存的传送有专门的指令,所以mov就没有提供内存到内存的传送方式
那个专门的指令叫串处理指令,在串处理指令前面如果不添加重复前缀的话,串处理指令所执行的就是一个单独的内存到内存的操作
举个例子:
movsb
这条指令执行后ds:si所指向的字节单元的内容将会传送到es:di所指向的字节单元
==================================================================
串处理指令和mov指令是有很大的不同的,首先最明显的就是mov的可以在操作数中指定源和目的,但串处理指令不能,它只能从ds:si到es:di,另外串处理指令在执行之后还会影响si和di寄存器
串处理指令主要用于大量内存数据的传送【大多数内存到内存的传送都是大量的传送】,一般不用于单个数据的传送,因为对相应寄存器的初始化需要大量的指令
串处理指令在《ibm-pc汇编语言程序设计》中有详细的介绍,我就不赘述了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯