汇编试验五:编写、调试具有多个段的程序

ds 数据段放入数据正确;

两次push 操作后,ss栈段正确;

由于pop 操作顺序,ds数据段并没有发生改变;

Source Code:

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

时间: 2024-09-29 08:49:48

汇编试验五:编写、调试具有多个段的程序的相关文章

实验5 编写调试有多个段的程序

实验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 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]

汇编实验五 编写、调试具有多个段的程序

南京信息工程大学实验报告 实验名称   实验 5 编写.调试具有多个段的程序 实验日期  12.2 得分 学院   计软院 专业   计科 年级   2017级 班次    6班 姓名    江轲禹 学号    20171308227 一.实验目的 1. 理解和掌握将数据.代码.栈放入不同段的程序的编写和调试 2. 理解具有多个段的汇编源程序对应的目标程序执行时,内存分配方式 二.实验准备 1. 结合第6章教材和课件,复习第6章内容 2. 复习第3章「栈」的知识 三.实验内容 教材133实验 5

实验 5 编写、调试具有多个段的程序

实验结论 实验1 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 start: mov ax,stack mov ss,ax mov sp,16 mov ax,data mov ds,ax push ds:[0] push ds:[2

实验五 编写、调试具有多个段的程序

四.实验结论 1 (1)cpu执行程序,程序返回前,data段中的数据为:23 01 56 04 89 07 bc 0a ef 0d ed 0f ba 0c 87 09 如下图所示: (2)cpu执行程序,程序返回前,cs=076c,ss=076b,ds=076a 如下图所示 (3)设程序加载后,code段的段地址为x,则data段的段地址为x-2h,stack段的段地址为x-1h 因为data一共占16个字节,stack一共占16个字节. 2 (1)cpu执行程序,程序返回前,data段中的数

实验五:编写、调试具有多个段的程序

实验任务一 将下面的程序编译.链接,用debug加载.跟踪,然后回答问题. 1 assume cs:code, ds:data, ss:stack 2 data segment 3 dw 0123h, 0456h, 0789h, 0abch, 0defh, 0fedh, 0cbah, 0987h 4 data ends 5 6 stack segment 7 dw 0, 0, 0, 0, 0, 0, 0, 0 8 stack ends 9 10 code segment 11 start: mo

【实验五】编写、调试具有多个段的程序

四.实验结论 *任务(1)(2)(3)基本步骤相同,这里只列举出(1)的实验步骤 步骤一:把要使用的代码粘贴到masm文件夹中. 步骤二:编译.连接.用debug调试. 步骤三:用r命令查看哥寄存器的值. cs是code的段地址,ds是data的段地址,ss是stack的段地址.这是因为代码前面的声明:   assume cs:code, ds:data, ss:stack 步骤四:用u命令反汇编,注意反汇编是code段,所以u命令后接的应该是cs. 步骤五:用g命令执行,根据反汇编得到的代码,

实验5 编写、调试具有多个段的程序

1.将下面的程序编译.连接.用Debug加载.跟踪,然后回答问题. 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 m

32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数

32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首先我们知道32位汇编是可以调用Windows API的,那么今天我们就调用windowsAPI来写一个窗口程序 如果你有windows开发知识,那么就很理解了,如果没有,那么跟着我写,跟着步骤去写,那么也可以写出来 首先我们要编写一个窗口程序(使用SDKAPI编写)有几个步骤 1.设计窗口类 2.注

汇编入门学习笔记 (五)—— 包含多个段的程序

疯狂的暑假学习之  汇编入门学习笔记 (五)-- 包含多个段的程序 参考: <汇编语言> 王爽 第6章 1.在代码中使用数据. assume cs:code code segment dw 0123h,0456h,0789h,0defh mov ax,0 mov bx,0 mov ax,4c00H int 21h code ends end dw 表示定义字型数据,db 表示定义字节型数据. 上面代码编译连接,用debug调试,-u cs:0 查看汇编代码,发现没有看到 mov ax,0  m