21,500
社区成员
发帖
与我相关
我的任务
分享
;数据段 source_buff变量为40个a
data segment
source_buff db 40 dup('a')
data ends
;附加段 dest_buffer 为40个字节的缓冲区
extra segment
dest_buffer db 40 dup(?)
extra ends
;代码段
code segment
main proc far ;main 类似高级语言中的函数名?
assume cs:code, ds:data, es:extra ;将段对应到相应段寄存器
start:
push ds ;将ds数据段压入栈
sub ax,ax ;ax减ax 就是清空?
push ax ;将ax压入栈
;将data的偏移地址放入ds数据寄存器
mov ax,data
mov ds,ax
;将extra的偏移地址放入es附加寄存器
mov ax,extra
mov es,ax
;以下为主要部分
lea si,source_buff ; 将source_buff的偏移地址放入 SI寄存器
;疑惑,SI和DI有着什么样的联系? 一个是源变址寄存器,一个是目的变址寄存器?
lea di,dest_buffer ; 这里是将source_buf和dest_buffer进行关联吗?
cld
mov cx,40 ;cx计数寄存器 计数40 ? 概念有点模糊
rep movsb ;movsb传送字符, rep是置0 ? 这个究竟是什么意思..? 书上说是传送整个字符串
ret ;返回
main endp;main"函数"结束
code ends
end start