kyowjw01 发表于 2017-7-28 10:01:52

来个大神帮小弟我解答一下汇编的问题吧。

1data:
2XResult:        db 0
3InputCnt:        db 0
4Tips:                db "Your computer was locked."
5Tips_Len        equ $-Tips
6times 510-($-$$) db 0xf
7dw 0xaa55

问题一: 第5行和第6行代码的意思。
问题二: $和$$是什么意思。哪里有看这类东西的详细说明,最好能给个网址或者书或者手册那就最好了。

ba21 发表于 2017-7-28 10:06:38

http://bbs.chinaunix.net/thread-3726777-1-1.html

erh 发表于 2017-7-28 14:54:27

根据ba21提供的链接,

1data:
2XResult:      db 0
3InputCnt:      db 0
4Tips:                db "Your computer was locked."
5Tips_Len      equ $-Tips
6times 510-($-$$) db 0xf
7dw 0xaa55
第五行的意思就是Tips_Len等于第四行那个字符串的长度;
第六行的意思就是定义510-第六行偏移地址个字节的0xf;
不知道你这个程序是哪种汇编,改造后调试如下:
assume cs:code,ds:dase
dase segment
    data:
    XResult:      db 0
    InputCnt:      db 0
    Tips:                db "Your computer was locked."
    Tips_Len      equ $-Tips
        off             equ $-offset data
    times db 510-27dup(0fh)
    dw 0aa55h
dase ends

code segment
        start:
                mov ax,dase
                mov ds,ax
                mov ax,Tips_Len
                mov bx,off
        mov ax,4c00h
        int 21h
code ends
end start




可以看出整个填充满了一个扇区,即512字节。

erh 发表于 2017-7-28 14:58:12

本帖最后由 erh 于 2017-7-28 15:00 编辑

通过解答问题又学到了很多东西啊{:10_266:}{:10_266:}
顺便问一下,你这个程序是干什么用的?好像是要锁定计算机呀{:7_141:}

kyowjw01 发表于 2017-7-28 16:00:33

erh 发表于 2017-7-28 14:58
通过解答问题又学到了很多东西啊
顺便问一下,你这个程序是干什么用的?好像是要锁定 ...

锁电脑,防止熊孩子长时间玩电脑。{:10_334:}

kyowjw01 发表于 2017-7-28 16:08:42

ba21 发表于 2017-7-28 10:06
http://bbs.chinaunix.net/thread-3726777-1-1.html

还是给楼下最佳吧,毕竟答题答的最亢奋。
看了你给的链接,也很快解惑了。{:10_266:}

$ 是当前位置
$$ 是段开始位置

$ - $$ 是当前位置在段内的偏移

erh 发表于 2017-7-28 16:56:07

{:10_256:}谢谢啦
用的什么汇编,我用masm编译时,说是$$没有定义
页: [1]
查看完整版本: 来个大神帮小弟我解答一下汇编的问题吧。