博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实验五
阅读量:5319 次
发布时间:2019-06-14

本文共 2237 字,大约阅读时间需要 7 分钟。

  1

assume cs:code,ds:data,ss:stackdata segment        dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hdata endsstack segment        dw 0,0,0,0,0,0,0,0stack endscode segmentstart:  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 21hcode endsend start

CPU执行任务,程序返回前,data段中的数据为多少?

  

CPU执行任务后,程序返回前,cs=076C,ss=076B,ds=076A.

程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1

2

代码:

assume cs:code,ds:data,ss:stackdata segment        dw 0123H,0456Hdata endsstack segment        dw 0,0stack endscode segmentstart:  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 21hcode endsend start

CPU执行程序,程序返回前,data段中的数据为多少?

data段的数据如上图

程序反悔前,cs=076C,ss=076B,ds=076A

code=x则data=x-2,stack=x-1

对于如下定义的段:

name segment

...

name ends

若数据占N个字节,则程序加载后,该段实际占有的空间为:

每个段固定16个字节,若超过16个字节,则另外再分配整数倍的段,直至全部存放下

(3)

assume cs:code,ds:data,ss:stackcode segmentstart:  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 21hcode endsdata segment        dw 0123H,0456Hdata endsstack segment        dw 0,0stack endsend start

cs=076A,ss=076E,ds=076D

若code段地址为X,则data段地址为:X+3,stack段地址为:X+4

(4)没有程序入口时则ip默认为0,只有第三个程序,因为它是从代码断开始的,所以可以正确执行,别的都不是从代码断开始,所以不能

(5)

assume cs:code a segment    dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffha endsb segment    dw 0,0,0,0,0,0,0,0b endscode segmentstart:    mov ax,al    mov ds,ax    mov cx,8    mov bx,0    mov ax,bl    mov ss,ax    mov sp,10hs:push [bx]    add bx,2    loop s    mov ax,4c00h    int 21hcode ends

 

(6)

assume cs:code a segment    dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffha endsb segment    dw 0,0,0,0,0,0,0,0b endscode segmentstart:    mov ax,al    mov ds,ax    mov cx,8    mov bx,0    mov ax,bl    mov ss,ax    mov sp,10h   s:push [bx]    add bx,2    loop s    mov ax,4c00h    int 21hcode ends

实验与总结:有一个细节就是如果没有入口的话那ip默认为0,写程序的时候要细心一些,多写几次

转载于:https://www.cnblogs.com/Dark-Leo/p/10022603.html

你可能感兴趣的文章
HDU-3592 World Exhibition
查看>>
js页面跳转常用的几种方式
查看>>
交互必备!国外创意的界面设计和交互动画库
查看>>
ACM/ICPC 之 Floyd范例两道(POJ2570-POJ2263)
查看>>
深入理解JS中的变量作用域
查看>>
第七章 数组实验
查看>>
python手记(50)
查看>>
乱码之UTF-8 &GBK
查看>>
深圳中软实习始末
查看>>
Oracle学习笔记之用户自定义函数
查看>>
js短信验证码
查看>>
linq使用Distinct()
查看>>
面试杂谈:面试程序员时都应该考察些什么?<转>
查看>>
1076. Forwards on Weibo (30)
查看>>
js 数组的基本操作
查看>>
html table标签
查看>>
第九周作业
查看>>
[Android]如何导入已有的外部数据库
查看>>
使用Git进行代码管理的心得
查看>>
centos7系统运行级别简介
查看>>