1.字单元的概念;
2.关于内存编号的概念;
3.8086不支持将数据直接写入段寄存器的操作,若要将一个数据写到DS中,则必须用通用寄存器做中转,例如:
mov bx,1000H
mov ds,bx //将1000H写到DS中去。
4.DS和[偏移地址]指示内存中的数据位置;
5.add,mov,sub指令操作的基本命令:
add 寄存器 , 数据
add 寄存器,寄存器
add 内存单元,寄存器
add 寄存器,内存单元
mov 段寄存器,内存单元
mov 段寄存器,寄存器
mov 内存单元,寄存器
....//没有 add ds,ax等此类命令。
6.数据段:长度为N(N小于等于64KB)地址连续,起始地址为16倍数的内存单元当作一个段来使用。按照定义,一个段最小应该为16个字节,最大不能大于64KB,而且起始地址必须是16的倍数;
7.入栈和出栈:(任意时刻,SS:SP指向栈顶元素),例如:
push ax 的执行,分以下两步执行:
(1)sp=sp-2.ss:sp指向当前栈顶前面的单元,以当前栈顶前面的单元为新的栈顶;
(2)将ax中的内容送入SS:sp指向的内存单元处,SS:SP此时指向新的栈顶。
pop ax的执行刚好和push ax相反,由以下两步完成:
(1)将SS:SP指向的内存单元中的数据送入AX中;
(2)SP=SP+2,ss:sp指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶。
8.关于空栈和满栈情况下的SP指向情况(空栈sp=xxxE,满栈sp=0)
检测题3.1
1.问题忽略,直接答案:
mov ax,1
mov ds,ax
mov ax,[0000] ax=2662
mov bx,[0001] bx=e626
mov ax,bx ax=e626
mov ax,[0000] ax=2662
mov bx,[0002] bx=d6e6
add ax,bx ax=fd48
add ax,[0004] ax=2c14
mov ax,0 ax=0000
mov al,[0002] ax=0026
mov bx,0 bx=0000
mov bl,[000c] bx=0026
add al,bl ax=005c
(2).题目忽略,直接答案:
mov ax,6622 ax=6622
jmp 0ff0:0100 cs=00f0,ip=0100
mov ds,2000h ax=2000
mov dx,ax ds=2000
mov ax,[0008] ax=c389
mov ax,[0002] ax=ea66
数据和程序没有区别。
检测点3.2
1.mov ax,1000h
mov dx,ax
mov bx,2000h
mov ss,bx
mov sp,0010h
push [0]
push [2]
push [4]
push [6]
push [8]
push [a]
push [c]
push [e]
(2) mov ax,2000h
mov ds,ax
mov bx,1000h
mov ss,bx
mov sp,0
pop [e]
pop [c]
pop [a]
pop [8]
pop [6]
pop [4]
pop [2]
pop [0]
汇编语言第三章学习笔记和测试题
原创
©著作权归作者所有:来自51CTO博客作者zhanglij988的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:汇编语言第二章学习笔记和测试题
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
第三章 执行测试
文章目录 第三章 执行测试示例:执行测试示例:UnitTest Portal示例:在单元测试门户中查看报告设置和拆卸示例:向测试类添加Setup和Tear Down方法源码
IRIS 单元测试 UnitTest 单元测试 IRIS Cache -
Python学习:第三章
第三章:基本数据类型
字符串 python 基本数据类型