📄 strcpy1.asm
字号:
stack segment para stack
dw 100 dup(?)
stack ends
data segment para
buffer db "If you attempt to assemble a 16bit executable file, but call the",
"32bit version of LINK, you will receive a LNKnnnn error message.",
"The following output example illustrates specifically which error ","messages you may receive:",'$',1024 dup(?)
p1 dw buffer
p2 dw buffer
p3 dw buffer
data ends
code segment para
assume cs:code,ds:data,ss:stack
main proc far
mov ax,data;数据段地址
mov ds,ax
mov ax,stack;堆栈段地址
mov ss,ax
mov ax,300
add p2,ax
mov ax,100
add p3,ax
push p1
push p2
call strcpy
mov dx,offset p2
mov ah,09h
int 21h
push p1
push p3
call strcpy
mov dx,offset p3
mov ah,09h
int 21h
push p3
push p1
call strcpy
mov dx,offset p1
mov ah,09h
int 21h
mov ax,4c00h
int 21h
main endp
strcpy proc far
push bp;保护bp
mov bp,sp
push di
push si
mov si,[bp+8];源数据段
mov di,[bp+6];目的数据段
push bx;保护bx
xor bx,bx;计数包括$在内
dec si
push ds
pop es
l1:
inc si
inc bx
cmp byte ptr[si],'$'
jnz l1
cmp si,di
jnb abo
sub si,bx
inc si
cld
mov cx,bx
rep movsb
jmp re
abo: add di,bx
std
mov cx,bx
rep movsb
re: pop bx
pop si
pop di
pop bp
ret 4
strcpy endp
code ends
end main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -