汇编语言(三)内存拷贝问题 以及 汇编数据 不能以字母打头

原创 2016年05月31日 17:03:52

在读 王爽的 《汇编语言》5.3小节 。 主要讲的 是 如何 将 ffff:0006 单元的内容 * 3 保存下来。

在看到这个问题,我并没有 急于 去看 下面的 代码,而是 自己 去 写了一个 asm:

assume cs:codesg
;将 ffff:0006 单元的 内容 * 3
codesg segment
	mov ax,ffffH
	mov ds,ax
	mov bx,6
	mov ax,[bx]
	mov cx,2
	s:add ax,[bx]
	loop s
	
	mov ax,4c00H
	int 21H
codesg ends

end

1.这段代码 编译 不过去,因为 汇编源代码中的数据不能以字母打头,所以得将 ffffh 修改成 0ffffh


2.其次 在 用 debug 跟踪 这个 exe 的时候,发现 程序 结果 不对。错误 出现在 mov ax,[bx] 和 add ax,[bx] 代码中。

mov ax,[bx] 是 将 ffff:6 ~ ffff:7 内存单元中的 内容 拷贝至 ax, 而不是 拷贝 ffff:6 单元。

add ax,[bx]  跟上面代码 错的 原因一致。


3.以及 masm 处理 mov ax,[3] 当做  mov ax,3 来看待。。。这个问题。代码中 不存在.


下面给出 正确的 汇编代码:

assume cs:codesg
;将 ffff:0006 单元的 内容 * 3
codesg segment
	mov ax,0ffffH
	mov ds,ax
	mov bx,6
	mov al,[bx]
	mov ah,0
	mov dx,0
	mov cx,3
	s:add dx,ax
	loop s
	
	mov ax,4c00H
	int 21H
codesg ends

end



ARM汇编指令学习 - 实现数据块的拷贝复制

设计一段程序完成数据块的复制,数据从源数据区snum复制到目标数据区dnum,数据量大小为NUM字(1个字=4个字节),复制时以8个字为单位进行,对于最后所剩不到8个字的数据,以字为单位进行复制...
  • asd051377305
  • asd051377305
  • 2016年04月07日 16:53
  • 2618

汇编写的内存拷贝函数

void AsmCopyMemory(char *DESTION,char *SOURCE,unsigned int count) {     char *des=DESTION;     ch...
  • lby978232
  • lby978232
  • 2012年10月28日 20:31
  • 944

汇编语言:将一个数据段中的内容复制到另一个数据段 并显示出来

data segment mess db 'computer software $' data ends exit segment buff db 19dup(?) exit ends ...
  • qq_16184125
  • qq_16184125
  • 2017年06月01日 23:21
  • 478

ARM汇编指令学习 - 实现数据块的拷贝复制

设计一段程序完成数据块的复制,数据从源数据区snum复制到目标数据区dnum,数据量大小为NUM字(1个字=4个字节),复制时以8个字为单位进行,对于最后所剩不到8个字的数据,以字为单位进行复制...
  • asd051377305
  • asd051377305
  • 2016年04月07日 16:53
  • 2618

ARM汇编指令学习 - 实现数据块拷贝

ARM汇编指令学习 - 实现数据块拷贝 这个学期,系里开了嵌入式的课程,正好借助这个机会系统地学习下ARM的指令系统。这个系列文章主要是通过一些简单的汇编程序实例来学习ARM指令,使用的编译器是...
  • xinyuwuxian
  • xinyuwuxian
  • 2013年05月17日 18:36
  • 2116

汇编基础入门知识

学习汇编前你应该知道的知识   1、汇编需要什么工具和程序,到哪里下载?     目前阶段,汇编程序仅需要两个程序就够了。masm.exe,link.exe。 前者是编译程序,后者是链接程序...
  • bytxl
  • bytxl
  • 2015年08月24日 09:34
  • 9402

汇编(通用寄存器_内存读写)

寄存器分为64位 32位 16位 8位寄存器,现阶段最多的就是64位寄存器,不过好多程序都是32位的,寄存器的位数是由计算机发展决定的  下面是他们的关系结构:   32位寄存器前面是32...
  • cic10235
  • cic10235
  • 2016年07月30日 14:20
  • 1194

汇编语言学习第七章-更灵活的定位内存地址的方法

本博文系列参考自>第三版,作者:王爽 前面已经通过类似[0]和[bx]的方法进行了内存定位了。本章将涉及更多内存地址定位和编程的方法。 7.1 and 和 or 指令 (1) and指令,逻辑...
  • u013018721
  • u013018721
  • 2016年04月24日 13:13
  • 1513

用汇编的眼光看C++(之拷贝、赋值函数)

拷贝构造函数和复制函数是类里面比较重要的两个函数。两者有什么区别呢?其实也很简单,我们可以举个例子,加入有这样一个类的定义: [cpp] view plaincopy ...
  • wtf19900910
  • wtf19900910
  • 2014年07月30日 09:53
  • 385

汇编-排序实验

一、实习目的     掌握用汇编语言编写程序的思路和方法。 二、实习内容     从首地址为1000H开始存放10个数,要求设计程序将这些数由小到大排序,排序后的数仍放在原地址处。 三、代...
  • u013507368
  • u013507368
  • 2014年11月21日 17:09
  • 1700
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:汇编语言(三)内存拷贝问题 以及 汇编数据 不能以字母打头
举报原因:
原因补充:

(最多只允许输入30个字)