曲曲的秘密学术基地

纯化欲望、坚持严肃性

欢迎!我是曲泽慧(@zququ),目前在深圳(ICBI,BCBDI,SIAT)任职助理研究员。


病毒学、免疫学及结构生物学背景,可以在 RG 上找到我已发表的论文

本站自2019年7月已访问web counter

汇编语言 实验5 第一部分

代码1

assume cs:code, ds:data, ss:stack

data segment
    dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h
data ends

stack segment
    dw 0, 0, 0, 0, 0, 0, 0, 0
stack ends

code segment

start: mov ax, stack
       mov ss, ax
       mov sp, 16

       mov ax, data
       mov ds, ax

       push ds:[0]
       push ds:[2]   ;这里的代码可以实现正向push
       pop ds:[2]
       pop ds:[0]

       mov ax, 4c00h
       int 21h

code ends
end start

设代码段地址为X, 数据段地址为X-2, 栈段地址为X-1.

代码2

assume cs:code, ds:data, ss:stack

data segment
    dw 0123h, 0456h
data ends

stack segment
    dw 0, 0
stack ends

code segment

start: mov ax, stack
       mov ss, ax
       mov sp, 16

       mov ax, data
       mov ds, ax

       push ds:[0]
       push ds:[2]   ;这里的代码可以实现正向push
       pop ds:[2]
       pop ds:[0]

       mov ax, 4c00h
       int 21h

code ends
end start

这时的我们发现代码段地址,数据段地址以及栈段地址较第一个代码没有发生改变。

定义段中数据占N个字节,则程序加载后,改段实际占有的空间为:

$$16(N/16 + 1)$$

说明如果数据长度没有达到16个字节依然占用一整个段地址空间。

代码3

assume cs:code, ds:data, ss:stack

code segment

start: mov ax, stack
       mov ss, ax
       mov sp, 16

       mov ax, data
       mov ds, ax

       push ds:[0]
       push ds:[2]   ;这里的代码可以实现正向push
       pop ds:[2]
       pop ds:[0]

       mov ax, 4c00h
       int 21h

code ends

data segment
    dw 0123h, 0456h
data ends

stack segment
    dw 0, 0
stack ends

end start

设代码段地址为X,数据段地址为X+3,栈段地址为X+4, 因为将data和stack代码放在代码后面。所以数据段地址和栈段地址也同样会发生改变。

如果将end start 改为end, 前三个代码中只有第三个能够正常执行,因为代码段正好在前面,直接编译不会出错。

Last One

python 类和对象 (1)

整理自小甲鱼鱼C论坛对象 = 属性 + 方法代码示例:class Turtle: # Python 中的类名(class)约定以大写字母开头 # 特征的描述成为属性(attribute),在代码层面来看就是变量 color = 'green' weight = 10 legs = 4 shell = True # 方法(method)就是函数,通过调用这些函数来完成工作 def run(self): print("我正在...…

pythonMore
Next One

汇编语言 6.2 6.3 在代码中使用段 将数据代码栈放入不同的段

6.2 在代码中使用栈让我们利用栈,将程序中定义的数据逆序存放。实现代码如下:assume cs:codesgcodesg segment dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h dw 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ;这里dw定义了16个字型数据,在程序加在后,将取得16个字 ;的内存空间,存放这16个数据。后面将这段空...…

汇编语言More