#2
libinden712019-11-22 00:13
|
程序代码:
assume cs:code,ds:data,ss:stack
data segment
MSG_INFO db 'hello world',0
data ends
stack segment stack
db 128 dup (0)
stack ends
StringPorc segment
strlen proc FAR uses CX DI pStr:WORD ;NEAR 段内跳跃 FAR 段跳跃
mov cx, 0FFFFH
mov di,pStr
CLD
REPNZ SCASB
JNZ QUIT
mov ax,0FFFEH
sub ax,cx
ret
QUIT:
xor ax,ax
ret
strlen endp
StringProc ends
code segment
start:
mov ax, data
mov ds,ax
mov ax,stack
mov ss,ax
mov ax,StringPorc
mov es,ax
invoke strlen offset MSG_INFO
mov ax,4C00H
int 21H
code ends
end start
[local]1[/local]
1. 这几个错误要怎么改?刚学汇编不是很懂。
2. 看到有人网上可以这样分段写(像C一样),但是我这样写就报错不知道为什么。求大佬告知。
这图是我扣的网上的代码:
[local]2[/local]
感觉这样写和C都快一样了,还能传参,保存寄存器,外部在用invoke调用,但是我自己试了下(就是上面的代码)就各种报错,我看了王爽老师的那本汇编 书上也没介绍这种写法。求大佬告知这种写法的课程视频或者书。多谢!