汇编语言(基础笔记) #有学习价值的

基础信息:

  1. reg -->寄存器
  2. sreg -->段寄存器
  3. CPU 16位线,寄存器也是16位。 地址总线20位。

物理地址 =  段地址X16+偏移地址

(2的20次方 = 1MB (即内存最多1MB 可知32位最多4GB,64位最多4ZB)  1个存储单元 = 8bit(8位)= 1字节(B /Byte)  )

**存储单位一般用B,KB,MB,GB,TB,EB,ZB,YB,BB来表示**

  1. 寄存器

段寄存器:

CS  IP   代码段

DS  SI   数据段

SS  SP   堆栈       BP

ES  DI   附加寄存器

(数据不能直接送入段地址 要从数据寄存器中转移)

标志寄存器

FR

数据寄存器(16位)

AX(accumulator):累加器,它是算术运算的主要寄存器,此外还可以作为乘,除运算及输入,输出的专用寄存器。

BX(Base):基址寄存器,常用于存放存储区的起始地址。

CX(Count):计数寄存器,常用于循环操作或字符操作中的计数器。

DX(Data):该寄存器常与AX配合,用于双字长运算,DX存放高位字,AX存放底字位,此外还可以用于输入、输出指令中存放外部设备接口的端口地址

注意:[CX] [AX] [DX] [DS]是错误写法 [BX]是正确写法

             [BX+si/di] / [BP+SI/DI] 是正确写法 其它是错误写法

大小写(字母是一个字节大小)

           将第五位置0--->大写(and 11101111)  置1--->小写(or 00010000)

0000:0000 – 0000:03FF 1024个储存单元为中断程序(256个)的入口地址 (每个中断程序入口地址占2个字 = 4个字节/存储单元) 低地址放IP 高地址放CS

指令               

  1. 跳转

Jmp CS:IP  ;(段地址:偏移地址)

Jmp AX    ;(段地址=DS 偏移地址=AX)

Jmp  dword ptr ds:[0]   ;(从DS:[0]中取[0+2]作为CS段地址,[0]作为IP地址)

Jmp word ptr ds:[0]     ;(从DS[0] 中取[0]作为IP地址)

Jmp short                             ;(IP+8位的偏移地址)

Jmp near                             ;(Ip+16位的偏移地址)

Jmp far                                 ;(CS:ip)

JCXZ                                       ;(CX!=0 则做短转移)

Je 等于就转移

Jne    不等于就转移

Jb       小于就转移

Jnb    不小于就转移

Ja       大于就转移

Jna    不大于就转移

MOVSB  ((ES)*16+(DI)) = ((DS)*16+(SI)) 如果DF=0 si++ di++ 如果=1 si—di—(此条指令用于两个数据段转移数据 每次一个字节 SI DI移动一位)

MOVESW 同上 每次SI DI一个字

  1. 一般

MOV AL,[0]      ;(从存储单元DS:[0]中取一个字节到AL)

MOV AX,[0]      ;(从存储单元DS:[0]中取一个字到AX)

Push SP-2   再入栈

Pop  先出栈   SP+2

(一个段的最大值 偏移地址是16位,则为216次方,每个存储单元1Byte 所以为 64KB)

Idata 常量

--程序返回 程序后台COMMAND 将程序载入内存 运行完之后返回

MOV AX,4COOH

INT 21H

---over

DB 200 dup(0) 重复2000DB字节)

--CALL RET

CALL    è push ip ,Jmp near ptr标号

CALL far ptr è PUSH CS ,PUSH IP ,Jmp far ptr 标号

RET èPOP IP

RETF è POP IP ,POP CS

OFFSET 取偏移地址

SEG 取段地址

DIV 被除数放在DX AX è除数是16位   AXè除数是8位      (8位即在2的8次方255之内)

MUL AL  è保存到AX(即乘数是8位之内) DX,AX(乘数是16位的时候)

ADC A,B (A+B+CF)加了一个进位标志位 一般都是先从低位加(有进位标志位了) 再到高位

CMP 减法不保留结果只改变进位标志位

CLD  DF置0

STD  DF置1

PUSHF        标志寄存器的值入栈

POPF         标志寄存器的值出栈

IRET           指令返回源程序

*中断指令(看了一大半 后面的没看了)

0000:0000 到0000;03FF 大小共1024个单元 没个中断入口地址为2个字(4个存储单元 高地址存段地址,低地址存偏移地址) 1024/4 = 256个中断入口 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值