2 yzy4829229 yzy4829229 于 2015.06.11 12:42 提问

关于汇编语言中调试多个段的程序(不懂)

根据题目要求是在start之间插入自己编辑的代码,要求将a段和b段中的数据相加,将结果存入c段中。下面的start之间的代码是我自己写的,但是在编译的过程中出现了错误,错误提示在图片中

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 ax,a 
        mov ds,ax

        mov ax,b
        mov es,ax

        mov bx,0
        mov cx,8

    s:  add es:[bx],[bx]
        inc bx 
        loop s 

        mov ax,c 
        mov ds,ax 

        mov bx,0
        mov cx,8

    s0: mov [bx],es:[bx]
        inc bx 
        loop s0

        mov ax,4c00h
        int 21h

    code ends 

end start

图片说明

1个回答

a1193561652
a1193561652   Rxr 2015.06.11 13:20
已采纳

我复制你的编译的问题在add es:[bx],[bx]和mov [bx],es:[bx]指令部分,都是不能从内存到内存。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
汇编语言(王爽)--实验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 ax,a ...
小结:实验5 编写、调试具有多个段的程序
1.结论 (1)若未指定程序的入口,程序载入后cs指向第一个段,ip=0;  若指定了程序的入口,程序载入后cs指向指定入口的那个段的段地址,ip等于入口相对段地址的偏移 (2)一个段的大小至少为16字节,最大为64k字节,因为计算地址时有 段地址*16 的步骤。 (3)若段的数据有n字节,则程序加载后,该段实际占有的空间为(n/1 6+1)*16(n/16取整数部分) (4)只有bx可
第5章 实验5 调试编译多个段的程序
需要注意的事项: 1. 每个段的大小必定时10h的整数倍,例如一个段实际填充大小为0x8,那么为 了段的对齐,编译器给它分配的空间是0x10字节。 2. 代码段的开始必须标明start标识,并且整个源代码结束时必须用end start来标识start的结束,两者缺一不可。但是如果缺少end start 那么编译器将程序段的第一个字节标识为程序的开始。即如果源代码第一个定义的段为代码段,
实验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
汇编学习笔记-实验5 编写,调试具有多个段的程序[1]
将下面的程序进行编译,跟踪,回答问题 data segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0abch,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,
汇编语言-多个段的程序
汇编语言-多个段的程序
[Hb-V] 编写 调试具有多个段的程序
《汇编语言·第三版》--王爽 1 各段段地址连续分配 将下面的程序编译、连接,用debug加载、跟踪,然后回答问题。 1.         assume    cs:code, ds:data, ss:stack 2.           3.         data segment 4.                  dw    0123h, 0456h
《汇编语言》学习(六)多个段的程序
《汇编语言》第六章主要讲述“如何编写包含多个段的汇编源程序”。本章的文字内容不多,主要通过编程实践来理解汇编源程序架构的含义,通篇学下来,我觉得有以下几点需要理解清楚: 1,这里所说的多个段(segment),从汇编“程序”的角度来说,它指的是程序所占用的内存空间的划分,大致分为:data segment、stack segment和code segment。其实际就是指定运行时CPU的
使用多个段来存储数据(汇编语言)
我们在以前学过在一个程序中使用了栈,数据,代码之类的,如果将他们都放在一个段里面,既显得凌乱,而且8086的一个段最大64KB,如果数据过于庞大,那也会显得不方便,所以,应该使用多个段来分别处理数据,代码,栈。 下面我们来分析一段程序,通过这个程序来讲解: 说明: ①定义多个段和我们以前讲的定义代码段一样,只是段名不同而已。 ②程序中有多个段如何访问这些数据呢,
汇编程序的简化写法
【说明】汇编语言提供了段定义等的简化写法的伪操作,可以使代码写得更简略一些。要将汇编语言作为工作语言使用的同学,可以在这一方面找资料深入一些【案例】输出hello world!.8086 .MODEL small .data str db 'hello world!$' .stack 20H .code start: mov ax,@data mov ds,ax le