|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
(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
-
- mov bx, 0
-
- push ds: [0]
- push ds: [2]
- pop ds: [2]
- pop ds: [0]
-
- mov ax, 4c00H
- int 21H
-
- code ends
- end start
复制代码
data段中的数据不会改变
cs、ss、ds中的内容视不同的电脑不同的操作系统而不同
如果code段的地址为X,则data段中的地址为X-2, stack段中的地址为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
-
- mov bx, 0
-
- push ds: [0]
- push ds: [2]
- pop ds: [2]
- pop ds: [0]
-
- mov ax, 4c00H
- int 21H
-
- code ends
- end start
复制代码
前三个问题跟(1)的答案一样
第四个问题的答案是16 * (N / 16 + 1),如果一个段中的数据不同16个字节他/它会补完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
-
- mov bx, 0
-
- push ds: [0]
- push ds: [2]
- 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
复制代码
data段中的数据不会改变
cs、ss、ds中的内容视不同的电脑不同的操作系统而不同
如果code段中的地址为X,则data段中的段地址为X + 3, stack段的段地址为X + 4
(4) 第(3)程序可以正常执行,因为编译器是从上而下来编译的
(5)代码:
- assume cs : code
- a segment
- db 1, 2, 3, 4, 5, 6, 7, 8
-
- a ends
- b segment
- db 1, 2, 3, 4, 5, 6, 7, 8
-
- b ends
- c segment
- db 0, 0, 0, 0, 0, 0, 0, 0
-
- c ends
- code segment
- start : mov ax, a
- mov ds, ax
-
- mov ax, c
- mov es, ax
-
- mov bx, 0
- mov cx, 8
-
- s : mov al, [bx]
- add es:[bx], al
- inc bx
-
- loop s
-
- mov ax, b
- mov ds, ax
-
- mov al, 0
- mov bx, 0
- mov cx, 8
- s0: mov al, [bx]
- add es:[bx], al
- inc bx
-
- loop s0
-
- mov ax, 4c00H
- int 21H
-
- code ends
- end start
复制代码
实现了将a和b段的数据相加到c段中
(6)代码:
- assume cs : code
- a segment
- dw 1, 2, 3, 4, 5, 6, 7, 8
-
- a ends
- b segment
- dw 0, 0, 0, 0, 0, 0, 0, 0
-
- b ends
- code segment
- start : mov ax, b
- mov ss, ax
- mov sp, 16
-
- mov ax, a
- mov ds, ax
-
- mov bx, 0
- mov cx, 8
-
- s : push [bx]
- add bx, 2
-
- loop s
-
- mov ax, 4c00H
- int 21H
-
- code ends
- end start
复制代码
实现将a段的数据逆序放在b段中。 |
|