汇编实验五
Posted jgxdbk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编实验五相关的知识,希望对你有一定的参考价值。
(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]
pop ds:[2]
pop ds:[0]
mov ax,4c00h
int 21h
code ends
end start
汇编连接程序:
程序返回之前:data中的数据没有发生改变。
程序返回前:cs=076c,ss=076b,ds=076a。
程序加载后,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
push ds:[0]
push ds:[2]
pop ds:[2]
pop ds:[0]
mov ax,4c00h
int 21h
code ends
end start
程序返回之前:data中的数据没有发生改变。
程序返回前:cs=076c,ss=076b,ds=076a。
程序加载后,code段的段地址为x,则data段的段地址为x-2,stack段的段地址为x-1。
在任意一个段中,程序加载之后,该段实际占有空间是(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]
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=076a,ds=076d,ss=076e
练习三的代码中code若设code段的段地址为x,那么data段的段地址为x+3,stack段的段地址为x+4
(4)
实验3能正常执行。因为前两个是数据段开头,而第三个是以指令开头,去掉start后,前两个就找不到入口了
(5)
assume cs:code
a1 segment
db 1,2,3,4,5,6,7,8
a1 ends
b1 segment
db 1,2,3,4,5,6,7,8
b1 ends
c1 segment
db 0,0,0,0,0,0,0,0
c1 ends
code segment
start:
mov bx,0
mov dx,0
mov cx,8
s: mov dx,0
mov ax,a1
mov ds,ax
add d1,[bx]
mov ax,c1
mov ds,ax
mov [bx],dl
inc bx
loop s
mov ax,4c00h
int
21h
code ends
end start
a segment
dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends
b segment
dw 8 dup(0)
b ends
code segment
start:
mov ax,b
mov ss,ax
mov sp,10h
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
以上是关于汇编实验五的主要内容,如果未能解决你的问题,请参考以下文章