汇编语言程序设计笔记

第一章:基础知识

CPU对存储器的读写

在这里插入图片描述

地址总线

在这里插入图片描述

数据总线

在这里插入图片描述

控制总线

在这里插入图片描述
在这里插入图片描述

主板

在这里插入图片描述

接口卡

在这里插入图片描述

各类存储器芯片

在这里插入图片描述

内存地址空间

在这里插入图片描述
在这里插入图片描述

第二章:寄存器

通用寄存器

在这里插入图片描述

字在寄存器中的存储

在这里插入图片描述

Note:
在这里插入图片描述

8086CPU给出物理地址的方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Note:
在这里插入图片描述

"段地址×16+偏移地址=物理地址"的本质含义

在这里插入图片描述

段的概念

在这里插入图片描述
Note:
段地址取起始地址的前16位,即10000H为起始地址的段,段地址为1000H;10080H为起始地址的段,段地址为1008H;

段寄存器

在这里插入图片描述
Note:
在这里插入图片描述

在这里插入图片描述

CS和IP

在这里插入图片描述
在这里插入图片描述
注解: 如果将数据当作指令使用就应该将CS:IP指向它。

修改CS、IP的地址

在这里插入图片描述
注意: 执行何处的指令取决于CS、IP
在这里插入图片描述
在这里插入图片描述

debug的使用

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第三章:寄存器

内存中字的存储

在这里插入图片描述
例子: 存放4E20H,4E存在高地址单元,20存在低地址单元。
在这里插入图片描述

练习:
在这里插入图片描述

在这里插入图片描述

实现字的传送

在这里插入图片描述
在这里插入图片描述
例子:
在这里插入图片描述
在这里插入图片描述
Note:
将段地址送入DS的两种方式

(1) mov ds 1000H  ❌
(2) mov bx 1000H  ✔️
    mov ds bx

原因:
在这里插入图片描述

DS和[address]

在这里插入图片描述
在这里插入图片描述

CPU提供的栈机制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

栈顶超界问题

在这里插入图片描述

第四章 第一个程序

源程序从写出到执行的过程

在这里插入图片描述

补充:用汇编语言写源程序

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

补充:从源程序到程序运行

源程序
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用link指令
在这里插入图片描述
生成exe文件
在这里插入图片描述
执行p4-1
在这里插入图片描述

补充:用debug装载程序

在这里插入图片描述

第五章 [BX]和loop指令

[…]与(…)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[BX]

在这里插入图片描述

loop指令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

loop和[BX]联合使用

在这里插入图片描述
即为放到ax中的8位寄存器中,再累加到dx中
在这里插入图片描述

段前缀

在这里插入图片描述
在这里插入图片描述

第六章 含多个段的程序

将数据、代码、栈放入不同的段

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第七章 更灵活的定位内存地址的方法

处理字符串问题

在这里插入图片描述

assume cs:codesg,ds:datasg
datasg segment
	db 'BaSiC'
	db 'iNfOrMaTiOn'
datasg ends
codesg segment
start:
	mov ax,datasg
	mov ds,ax
	mov bx,0
	mov cx,5
      s:mov al,[bx]
        and al,11011111b
	mov [bx],al
	inc bx
	loop s
     s0:mov al,[bx]
        or al,00100000b
	inc bx
	loop s0

	mov ax,4c00h
	int 21h
codesg ends
end start

[bx+idata]

在这里插入图片描述
在这里插入图片描述

SI和DI

在这里插入图片描述
小练习:(程序保存在:sidi中)
在这里插入图片描述

assume cs:codesg,ds:datasg
datasg segment
	db 'welcome to masm!'
	db '................'
datasg ends
codesg segment
start:  mov ax,datasg
	mov ds,ax

	mov si,0
	mov di,16
	mov cx,8
  s:mov ax,[si]      ;注意这里的两个内存没有直接交换,而是借助寄存器ax
	mov [di],ax
	add si,2
	add di,2
	loop s

	mov ax,4c00h
	int 21h
codesg ends
end start

[bx+si]和[bx+di]方式寻址

在这里插入图片描述

[bx+siidata+]和[bx+di+idata]方式寻址

在这里插入图片描述

不同的寻址方式应用以及演示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

第八章 数据处理的两个基本问题

用于内存寻址的寄存器

在这里插入图片描述
在这里插入图片描述

在哪里?有多长?

在这里插入图片描述

有多长?

在这里插入图片描述

div指令

在这里插入图片描述
在这里插入图片描述

dup指令

在这里插入图片描述
在这里插入图片描述

第九章 转移指令的原理

转移综述

在这里插入图片描述

操作符offset

在这里插入图片描述
在这里插入图片描述

jmp指令——无条件转移

第十章 CALL和RET指令

第十一章 标志寄存器

第十二章 内中断

第十三章 int指令

第十四章 端口

第十五章 外中断

第十五章 直接定址表

第十七章 使用BIOS进行键盘输入和磁盘读写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值