汇编语言

参考书籍:汇编语言--王爽(n27d)

基础知识:

①CPU由运算器、控制器、寄存器等组成。用汇编写代码,其实就是直接对寄存器进行操作!

②通用16位寄存器:AX、BX、CX、DX(每一个都对应高位AH、低位AL)

③8086CPU寻址:段地址*16 + 偏移地址 = 基础地址 + 偏移地址 = 物理地址

④程序执行:CS中的内容*16+IP中的内容(CS-代码段寄存器,IP-指令指针寄存器),相当于每一段就是16位。

⑤修改cs、ip:(每次使用完jmp指令,IP寄存器就会改变)

 ⑥DS寄存器:存放要访问数据的段地址

将100H(cs:ip=100:0)地址中的数据读取到al中:([...]表示一个内存单元,里面的数表示内存单元的偏移地址。段地址默认取ds中存储的地址,但ds赋地址,必须通过寄存器(这里选用bx)中转)

mov bx,100H
mov ds,bx
mov al,[0]

如果上述代码中的0是一个寄存器,如ax,则ax中存储的是偏移地址,段地址还是会从ds中取。 

⑦入栈、出栈(形象生动)

push 寄存器(将一个寄存器中的数据入栈)、pop 寄存器(用一个寄存器接收出栈的数据)

push 段寄存器(将一个段寄存器中的数据入栈)、pop段 寄存器(用一个段寄存器接收出栈的数据)

push 内存单元(将一个内存字单元处的字入栈,以字为单位进行操作)、pop 内存单元(用一个内存字单元接收出栈的数据)

 

⑧()的意思:表示对应寄存器或者内存中的内容

1、汇编实现1+2+……+100的程序 

assume cs:codeseg  ;cs表示代码段寄存器
codeseg segment

start:
	mov ax,1
	mov bx,0
loops:  add bx,ax
	add ax,1
	cmp ax,100
	je loope 
	loop loops

loope:		
	mov ax,4c00h
	int 21h
codeseg ends
end start

2、十进制转十六进制格式输出 

assume cs:codeseg
codeseg segment

start:
	mov ax,10
	mov dl,55
	add dl,al

	mov ah,02h
	int 21h

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

ax输入为10,即al=Ah,ah=00h输出为A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值