【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
(1) data 的数据并没有 发生改变
(2) cs=076c ss=076b ds=076a
(3) 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,16t
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
(1) data 的数据并没有 发生改变
(2) cs=076c ss=076b ds=076a
(3) data的段地址为x-2 stack的段地址为x-1
(4) (n/16+1)*16 /并非除法而是取整数 因为一段数据的大小为16个字节 那么短地址开始都为16的倍数不满16的按照16个字节的段来计算超过16比如17就需要两个数据段32保证为16的倍数
【3】
assume cs:code,ds:data,ss:stack
code segment
start: mov ax,stack
mov ss,ax
mov sp,16t
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
(1) data 的数据并没有 发生改变
(2) cs=076a ss=076e ds=076d
(3) data的段地址为x+3 stack的段地址为x+4
(4) 程序3可以正确运行,因为程序是由上往下运行的 程序1,2 如果没有start 程序就会从数据段开始运行 而程勋3不同,因为 指令在数据段之前 所以去掉start 依旧是指令运行在先。
(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 bx,0
mov ax,a
mov ds,ax
mov cx,8
s: mov ax,ds:[bx]
add ax,ds:[bx+16]
mov ds:[bx+32],ax
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
(6)
assume cs:code
a segment
dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends
b segment
dw 0,0,0,0,0,0,0,0
b ends
code segment
start: mov ax,a
mov ds,ax
mov ax,b
mov ss,ax
mov ax,16
mov sp,ax
mov bx,0
mov cx,8
s:mov ax,ds:[bx]
push ax
inc bx
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end start
最开始代码段a我以为是一个数据一字节 因为一个代码段为16的倍数 那么 1到ff刚好 所以我以为这只占16个字节
但是实际测试,占了32个字节 正好 对应了前面的公式 (n/16+1)*16
- [游客] 兄弟,现在汇编网似乎不能登录了 加油阿 12/28 17:05
- [tom7370] 兄弟,都一个月了。。。 08/16 18:12
- [tom7370] 怎么没动静了? 08/05 17:18
- [tom7370] 自愧不如啊 07/18 17:22
- [tom7370] 你的学习进度比我快多了哩 我用了将近6个月才学完这本书。。。 不像网站上说的2个月。。。。 07/18 17:20
- [mr_crbn] 啊 我佛了 这个 缩进 我在notepad++ 缩进的好好的, 07/14 14:44
- [mr_crbn] 第3题的第五小题 用到了 [bx+32] 我是实际测试过了 可以用的 就用了 其实不用这种方法 07/12 19:25
- [tom7370] 加油! 07/12 12:03
- [tom7370] 你对第二问的理解似乎不对 题目的意思大概是要你写出指令的执行过程 07/06 09:00
- [mr_crbn] 非常感谢你,我理解的确实不对 我以为一个存储器的是有固定的存储单元,笔记已经改正了 06/30 17:45
- [tom7370] 你还真是牛逼,几天就搞完我几个星期搞完的东西。 07/04 22:33