0%


🍀王爽 《汇编语言》 实验10解答🍀

1、显示字符串
在这里插入图片描述
解:

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
assume cs:code 
data segment
db 'Welcome to masm!',0
data ends

code segment
start:
mov dh,8
mov dl,3
mov cl,2
mov ax,data
mov ds,ax
mov si,0
call show_str

mov ax,4c00h
int 21h

show_str:
push ax
push bx
push cx
push dx
push si

mov ah,0
mov al,dh
mov dh,0Ah
mul dh

add ax,0b800h
mov es,ax

mov al,dl
mov dl,2
mul dl
mov bx,ax

s:
mov al,ds:[si]
cmp al,0
je ok
mov ah,cl

mov es:[bx],ax

inc si
add bx,2
jmp s

ok:

pop si
pop dx
pop cx
pop bx
pop ax

ret
code ends
end start
阅读全文 »


🍀王爽 《汇编语言》 实验11解答🍀

1、显示字符串
在这里插入图片描述
解:

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
assume cs:code 
data segment
db 'Welcome to masm!',0
data ends

code segment
start:
mov dh,8
mov dl,3
mov cl,2
mov ax,data
mov ds,ax
mov si,0
call show_str

mov ax,4c00h
int 21h

show_str:
push ax
push bx
push cx
push dx
push si

mov ah,0
mov al,dh
mov dh,0Ah
mul dh

add ax,0b800h
mov es,ax

mov al,dl
mov dl,2
mul dl
mov bx,ax

s:
mov al,ds:[si]
cmp al,0
je ok
mov ah,cl

mov es:[bx],ax

inc si
add bx,2
jmp s

ok:

pop si
pop dx
pop cx
pop bx
pop ax

ret
code ends
end start
阅读全文 »


🍀王爽 《汇编语言》 实验4解答🍀

在这里插入图片描述
在这里插入图片描述
(1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
assume cs:codesg

codesg segment

mov ax,0
mov ds,ax

mov al,0
mov bx,0200h
mov cx,64
s: mov [bx],al
inc bx
inc al
loop s

mov ax,4c00h
int 21h

codesg ends

end
阅读全文 »


🍀王爽 《汇编语言》 实验5解答🍀

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(1).1
  当debug未执行我们的代码段指令时,从075A:0000开始的256字节是PSP段(之前的实验中已经进行过相关解释),而此时我们定义的数据是从075A:0100开始存放的。这个时候DS可能只是被初始化为075A(SS,CS同理被初始化)
在这里插入图片描述
  此时的DS段内容如下:
在这里插入图片描述
在这里插入图片描述
  而当使用-g 001d执行完我们的代码段指令后,会发现DS,CS,SS段的段地址已经发生了变化:
在这里插入图片描述
  DS段内容相应地变成了(注意和未执行指令时的DS段内容对比):
在这里插入图片描述
(1).2
实验结果:
在这里插入图片描述
(1).3假设code段地址为X,则data段地址为X-2,stack段地址为X-1
(2).1和(2).2
实验结果:
在这里插入图片描述
(2).3假设code段地址为X,则data段地址为X-2,stack段地址为X-1
(2).4如果段中占用N个字节,则程序加载后,实际占有空间为N/16上取整×16(简而言之就是如果没满的话,用0补满该程序对应的机器码所占用的最高地址空间的16字节空间)
(3).1
实验结果:
在这里插入图片描述
(3).2
实验结果:
在这里插入图片描述
(3).3 假设code段地址为X,则data段地址为X+3,stack段地址为X+4。
(4)不指明程序入口,那么程序会直接从最开始运行,所以只有程序(3)可以正常运行
(5)

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
41
42
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 ax,b
mov es,ax
mov si,0
mov di,16

mov cx,8
s:
mov al,ds:[bx]
add al,es:[si]
mov es:[di],al
inc bx
inc si
inc di
loop s

mov ax,4c00h
int 21h

code ends

end start
阅读全文 »


🍀王爽 《汇编语言》 实验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
41
42
43
44
45
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,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov sp,10h
mov bx,3
mov cx,4
s:
push cx
mov cx,4
mov si,0

s1:
mov al,ds:[bx][si]
sub al,20h
mov ds:[bx][si],al
inc si
loop s1

add bx,16
pop cx

loop s

mov ax,4c00h
int 21h

codesg ends

end start
阅读全文 »