王爽「汇编语言」学习笔记(四)

Study Notes Assembly

可执行文件

可执行文件 = 描述信息 + 程序

程序:源程序中的汇编指令和定义的数据

描述信息:主要是 masm.exelink.exe 对源程序中相关伪指令进行处理所得到的信息

end start 指明程序入口,被转化为一个入口地址,存储在可执行文件的描述信息中

段容量

一个段段容量不能大于 64KB ,这是受 8086CPU 的限制

Lab 5: 编写、调试具有多个段的程序

任务一

  1. 0123H, 0456H, 0789H, 0abch, 0defh, 0fedh, 0cbah, 0987H
  2. cs = 076C, ss = 076B, ds = 076A
  3. data: X - 2, stack: X - 1

任务二

  1. 0123H, 0456H
  2. cs = 076C, ss = 076B, ds = 076A
  3. data: X - 2, stack: X - 1
  4. 16 的倍数个字节且大于等于 N

任务三

  1. 0123H, 0456H
  2. cs = 076A, ss = 076E, ds = 0766D
  3. data: X + 3, stack: X + 4

任务四

第 3 题,因为没有入口地址的话 IP 默认为 0 ,前两题从 0 到后面一段的内容都是数据内容而不是正确的指令内容,无法被正常执行

任务五

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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 bx, 0
mov cx, 8
s: mov al, ds:[bx]
add al, ds:[bx+16]
mov ds:[bx+32], al
inc bx
loop s

mov ax, 4c00h
int 21h
code ends
end start

任务六

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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, a
mov ss, ax
mov sp, 32
mov bx, 0
mov cx, 8
s: push ss:[bx]
add bx, 2
loop s

mov ax, 4c00h
int 21h
code ends
end start

Lab 6: 实践课程中的程序

任务一

任务二

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
assume cs:codesg, ss:stacksg, ds:datasg

stacksg segment
dw 0, 0, 0, 0, 0, 0, 0, 0
stacksg ends

datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends

codesg segment
start: mov ax, stacksg
mov ss, ax
mov sp, 16
mov ax, datasg
mov ds, ax
mov bx, 0

mov cx, 4
s0: push cx
mov si, 0

mov cx, 4
s: mov al, [bx+si+3]
and al, 11011111b
mov [bx+si+3], al
inc si
loop s

pop cx
add bx, 16
loop s0

mov ax, 4c00H
int 21H
codesg ends
end start

Author: f1a3h

Permalink: https://blog.rbkou.me/Study-Notes/Assembly/asm4/

文章默认使用 CC BY-NC-SA 4.0 协议进行许可,使用时请注意遵守协议。

Comments