1、(按实验结果填空)Mov ax,ffffMov ds,axMov ax,2200Mov ss,axMov sp,0100Mov ax,0 ;ax=5BEAAdd ax,2 ;ax=5CCAMov bx,4 ;bx=30F0Add bx,6 ;bx=6026Push ax ;sp=00FE; 修改的内存单元的地址是2200:00FE 内容是5CCAPush bx ;sp=00FC;00FC 内容是 6026Pop ax ; ax=6026.Pop bx ;sp=0100; bx=.5CCAPush 4 ;00FE 内容是 30F0Push 6 ; 修改的内存单元的地址是 2200:00FC内容是
2、 2F36实验截图如下:实验2-2(分析问答实验)答:因为T命令是单步中断,我们在后面学习后知道,CPU执行中断时会保留现场,即将标志寄存器,CS,IP等入栈,而实验中栈的地址正好是要查询的内存地址,所以即便未对内存单元进行写入命令,但里面的值会因为CPU要保留现场自动被改了实验(1)代码: ASSUME CS:CODESCODES SEGMENTSTART: mov ax,2000h mov ss,ax mov sp,0 add sp,10 pop ax pop bx push ax push bx MOV AH,4CH INT 21HCODES ENDS END START(2)debug
3、跟踪:(3)用debug跟踪查看PSP中的内容:可见PSP的头两个字节是CD 20,与书上的一致实验4-1代码如下: mov ax,0 mov ds,ax mov bx,200h mov cx,64s: mov bx,al inc al inc bx loop s END START实验4-1运行图如下:实验4-2代码如下: mov ax,200h mov bx,0 mov bx,bx运行结果同实验4-1的一样实验4-3(补全代码) mov ax,cs mov ax,20h mov es,ax mov cx,16h mov al,bx mov es:bx,al因为要将代码复制到0:200处,则
4、必须知道代码的地址,和代码的长度,代码的地址在cs和IP中,代码的长度可以编译后用U命令查看后确定,这个之前随便打一个数就可以,不影响代码的长度,因为那个数占的空间和真实的长度一样,所以用U命令后在改过来即可实验4-3的运行图如下:实验5-1代码如下:DATAS SEGMENT dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hDATAS ENDSSTACKS SEGMENT dw 0,0STACKS ENDSCODES,DS:DATAS,SS:STACKS MOV AX,stacks MOV ss,AX mov sp,16 mov ax,da
5、tas push ds:02 pop ds:实验5-1运行图如下:CPU执行程序后,程序返回前,data段中的数据为多少?不变如上图CPU执行程序后,程序返回前,CS=144Ch,SS=144Bh,DS=144Ah。设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1.实验5-2代码如下:ASSUME CS: dw 0123h,0456h MOV sS,AX实验5-2运行图如下:对于如下定义的段:Name segment Name ends如果段中的数据占N个字节,则程序加载后,该段实际占用空间为16N倍。实验5-3代码如下: dw 0123h,04
6、56h实验5-3运行图如下:CPU执行程序后,程序返回前,CS=144Ch,SS=144Eh,DS=144Dh。设程序加载后,code段的段地址为X,则data段的段地址为X+3,stack段的段地址为X+4。实验5-4:如果将(1),(2),(3)题中的最后一条伪指令“end start”改为“end”(也就是说,不指明程序的入口),则哪个程序任然可以正确执行?程序都可以正确执行,因为去掉start后,由于没有的标志,系统会将从code段的起始位置当作程序代码的开始处,然后一直执行下去,而这三个程序在start前没有其他的内容,去掉start也就不影响期功能了实验5-5代码如下:CODES
7、SEGMENT a SEGMENT db 7,8 a ENDSb SEGMENT db 7,8b ENDSCC SEGMENT db 0,0CC ENDS MOV AX,a MOV DS,AXmov si,0Mov cx,8 add al,0+siadd al,16+siMov 32+si,al inc si loop s实验5-5运行图如下:实验5-6代码如下: dw ah,0bh,0ch,0dh,0eh,0fh,0ffha ends mov ax,b mov cx,8 push bx add bx,2实验5-6运行图如下:实验6代码如下:stacksg SEGMENTstacksg ENDSdatasg SEGMENT db 1. display 1. brows 1. replace 1. modifly datasg ENDSDATASg,SS:STACKSg MOV AX,DATASg mov ax,stacksg mov cx,4s0: push cx mov si,3 mov al,bx+si and alb mov bx+si,al add bx,16 pop cx loop s0 实验6运行图如下:实验7代码如下: Db197
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1