第五章实验五
(1)和(2)的程序:
assume cs:code
code segment
mov ax,0020h
mov ds,ax
mov bx,0
mov cx,40h
s: mov [bx],bx
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
(3)两处要填的分别是:
CS
0017H
检测点6.1
(1)应填:
mov cs:[bx],ax
(2)应填:
cs
24H
pop cs:[bx]
第六章实验
(1)
<1>CPU执行程序,程序返回前,data段中的数据为多少?
0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
<2>CPU执行程序,程序返回前,cs=145AH 、ss=1459H 、ds=1458H
<3>设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1
(2)
<1>CPU执行程序,程序返回前,data段中的数据为多少?
0123h,0456h
<2>CPU执行程序,程序返回前,cs=145AH 、ss=1459H 、ds=1458H
<3>设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1
<4>对于如下定义的程序段:
name segment
....
name ends
如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为N
(3)
<1>CPU执行程序,程序返回前,data段中的数据为多少?
0123h,0456h
<2>CPU执行程序,程序返回前,cs=1458H 、ss=145CH 、ds=145BH
<3>设程序加载后,code段的段地址为X,则data段的段地址为X+2,stack段的段地址为X+3
(4)
如果将(1)(2)(3)中的最后提调伪指令改为end,则只有(3)能正确执行。
因为(3)中代码段一开始就是指令,而不是数据,在数据定义之前又可以从程序返回操作系统,因此不会产生(1)(2)中将数据当成指令来执行的错误。
(5)需要补充的程序:
code segment
start: mov ax,a
mov ds,ax
mov bx,0
mov ax,c
mov es,ax
mov ax,b
mov ss,ax
mov cx,8
s: mov al,[bx]
add al,ss:[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
(6)需要补充的程序:
code segment
mov ax,b
mov ss,ax
mov sp,10h
mov ax,a
mov ds,ax
mov bx,0
mov cx,8h
s: push [bx]
add bx,2
loop s
mov ax,4c00h
int 21h
code ends
- [younggay] 如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为N ================ 08/18 09:29
- [younggay] 实验五的第1、2题中,“s: mov [bx],bx ”这条指令应该是“s: mov [bx], 08/18 09:27
- [younggay] 更改后的回答都OK了。 08/18 08:56
- [mywiil] 博主回答的都没有问题。 对于检测点9.1 (1)db 0 dw 0 这个答案, 08/13 09:49
- [游客] 连中断都理解到了,看来博主很用心。 中断除了保存cs,ip外还有标志寄存器。 08/07 18:47
- [游客] 监测点2.1的(1)中有些不对,建议重新全部计算一下。 检测点2.3建议看看本章节的“小结”,就明 08/06 14:58
- [tinyparticle] 检测点2.1(1) 第二格mov ah,31h 第十一格add ah,ah 第十二格 08/05 21:56
- [游客] 事情选择了,就要做,做就要做好! 08/03 20:54