1.[bx]和内存单元

mov ax , [bx]

[bx]:表示一个内存单元,它的偏移地址在bx中

(ax) = ((ds)*16+(bx))

将一个内存单元的内容送入ax中,这个内存单元的长度为2字节,存放一个字,偏移地址在bx中,段地址在ds中

mov al , [bx]

将一个内存单元的内容送入ax中,这个内存单元的长度为1字节,存放一个字节,偏移地址在bx中,段地址在ds中

2.描述性的符号”()”

“()”来表示一个寄存器或一个内存单元中的内容

(ax)表示ax中的内容

(al)表示al中的内容

((ds)*16+(bx))表示内存位于((ds)*16+(bx))中的内容

3.idata 表示常量

   inc 表示递增1

mov bx , 1

inc bx

bx = 2

4.loop

1.(cx) = (cx) –1

2.判断cx中的值,不为0则转至标号处执行程序,如果为0则向下执行

mov cx , ?    ;?表示循环的次数

s: add ax, ax

loop s          ;表示一个loop循环的格式

例子

assume cs:code

code segment

mov ax , 2

mov cx , 11

s:add ax,ax

loop s

mov ax ,4c00h

int 21h

code ends

end

5.在汇编程序中,数据是不能以字母开头的

assume cs : code

code 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

code ends

end

6.masm和debug的不同

在对[…]的理解上,masm和debug的理解是不同的,masm将其理解为“….”,debug理解为内存单元

mov ax , 2000h

mov ds , ax

mov bx , 0

mov al , [bx]

mov ax , 2000h

mov ds , ax

mov al , ds :[0]

7.段前缀

ds: cs: ss: es:,用于显示指明内存单元的段地址

8.总结

1.我们需要向一段内存中写入内容

2.这段空间里面不该包含系统或者其他程序的数据和代码,否则会引发错误

3.dos方式下,一般情况,0:200~0:2ff空间中没有系统或者其他程序的数据

4.我们需要直接向内存直接写入内容,就是用0:200~0:2ff这段空间

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-04
  • 2021-12-22
  • 2022-02-20
  • 2022-01-19
猜你喜欢
  • 2021-06-11
  • 2022-12-23
  • 2021-06-24
  • 2022-12-23
  • 2021-09-25
  • 2022-12-23
  • 2021-08-31
相关资源
相似解决方案