编程,计算data段中的第一组数据的3次方,结果保存在后面一组dword单元中
摘要:assume cs:code data segment dw 1,2,3,4,5,6,7,8 dd 0,0,0,0,0,0,0,0 data ends code segment start: mov ax,data mov ds,ax mov si,0 ...
阅读全文
posted @
2018-11-08 12:01
迷心迷
阅读(584)
推荐(0)
call指令和ret指令配合实现子程序调用
摘要:子程序的框架如下。 标号: 指令 ret 具有子程序的源程序的框架如下。
阅读全文
posted @
2018-11-07 17:52
迷心迷
阅读(323)
推荐(0)
call指令
摘要:CPU执行call指令时,进行两步操作: 将当前的IP或CS和IP压入栈中; 转移。 call指令不能实现短转移,除此之外,call指令实现转移的方法和jmp指令的原理相同。 1)依据位移进行转移的call指令 call 标号(将当前的IP压栈后,转到标号处执行指令) CPU执行此种格式的call指
阅读全文
posted @
2018-11-07 17:28
迷心迷
阅读(1862)
推荐(0)
ret和retf
摘要:ret指令用栈中的数据,修改IP的内容,从而实现近转移; retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移。 CPU执行ret指令时,进行下面两步操作: (IP) = ((ss)*16+(sp)) (sp)=(sp)+2 CPU执行retf指令时,进行下面4步操作: (IP)=((ss
阅读全文
posted @
2018-11-07 14:44
迷心迷
阅读(598)
推荐(0)
编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'welcome to masm!'
摘要:80*25彩色字符模式显示缓冲区的结构: 内存地址空间中,B8000H~BFFFFH共32KB的空间,为80*25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在显示器上。 在80*25彩色字符模式下,显示器可以显示25行,每行80个字符,每个字符可以有256中属性(背景色、
阅读全文
posted @
2018-11-07 10:52
迷心迷
阅读(1002)
推荐(0)
转移指令
摘要:1、可以修改IP,或同时修改CS和IP的指令统称为转移指令。 8086CPU的转移行为有以下几类。 只修改IP时,称为段内转移,例如:jmp ax。 同时修改CS和IP时,称为段间转移,例如:jmp 1000:0。 由于转移指令对IP的修改范围不同,段内转移又分为:短转移和近转移。 短转移IP的修改
阅读全文
posted @
2018-11-07 09:24
迷心迷
阅读(836)
推荐(0)
操作符offset
摘要:操作符offset在汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址。 例如在如下程序段,实现了在运行中将s处的一条指令复制到s0处。
阅读全文
posted @
2018-11-07 09:14
迷心迷
阅读(671)
推荐(0)
寻址方式在结构化数据访问中的应用
摘要:power idea公司从1975年到1995年的基本情况如下: 编程将data段中的数据按如下格式写入到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。 代码如下。 代码参考链接:https://blog.csdn.net/misskissC/artic
阅读全文
posted @
2018-11-06 17:42
迷心迷
阅读(213)
推荐(0)
dup
摘要:dup是一个操作符,由编译器识别处理,和db、dw、dd等数据定义伪指令配合使用,用来进行数据的重复。 例如 db 3 dup (0) 定义了3个字节,它们的值都是0,相当于db 0,0,0 db 3 dup (0,1,2) 定义了9个字节,相当于db 0,1,2,0,1,2,0,1,2 db 3
阅读全文
posted @
2018-11-06 17:27
迷心迷
阅读(766)
推荐(0)
div指令和mul指令
摘要:div是除法指令,使用div做除法时需要注意: 1)除数:有8位和16位两种,在一个寄存器或者内存单元中 2)被除数:默认存放在AX或DX和AX中。如果除数为8位,被除数则为16位,默认在AX中存放;如果除数为16位,被除数为32位,在DX和AX中存放,DX存放高16位,AX存放低16位。 3)结果
阅读全文
posted @
2018-11-06 17:22
迷心迷
阅读(1633)
推荐(1)
寻址方式的综合运用
摘要:关于DEC公司的一条记录(1982年)如下. 公司名称: DEC 总裁姓名:Ken Olsen 排名: 137 收入:40(40亿美元) 著名产品:PDP(小型机) 数据存放如下图: 到了1988年DEC公司的信息有了如下变化。 1)Ken Olsen在富翁榜上的排名已升至38位; 2) DEC的收
阅读全文
posted @
2018-11-06 17:16
迷心迷
阅读(179)
推荐(0)
指令处理的数据的长度
摘要:在汇编指令中,通过以下方式指定指令要处理的数据的长度 1) 通过寄存器名指明要处理的数据的尺寸。 例如ax是字操作,al是字节操作 2)没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte。 例如 mov word ptr sd:[0], 1 字单元
阅读全文
posted @
2018-11-06 17:08
迷心迷
阅读(182)
推荐(0)
寄存器总结
摘要:8086CPU中,只有bx,bp,si,di这4个寄存器可以用在[...]中进行内存单元的寻址。 这4个寄存器可以单个出现,或只能以4中组合出现:bx+si,bx+di,bp+si,bp+di。 只要在[...]中使用寄存器bp,而指令中没有显性的给出段地址,段地址默认在ss中。
阅读全文
posted @
2018-11-06 16:58
迷心迷
阅读(114)
推荐(0)
不同的寻址方式
摘要:1、8086的寻址方式 [idata]用一个常量来表示地址,可用于直接定位一个内存单元 [bx]用一个变量来表示内存地址,可用于间接定位一个内存单元 [bx+idata]用一个变量和常量表示地址,可在一个起始地址的基础上用变量间接定位一个内存单元 [bx+si]用两个变量表示地址 [bx+si+id
阅读全文
posted @
2018-11-06 16:51
迷心迷
阅读(430)
推荐(0)
SI和DI
摘要:si和di是8086CPU中和bx功能相近的寄存器,si和di不能够分成两个8位寄存器来使用。 用si和di实现将字符串"welcome to masm!"复制到它后面的数据区中。
阅读全文
posted @
2018-11-06 16:38
迷心迷
阅读(450)
推荐(0)
包含多个段的程序
摘要:1、在代码段中使用数据 dw即“define word”,使用dw定义了8个字型数据。这8个数据是在代码段的偏移0、2、4、6、8、A、C、E、处。程序运行时,它们的地址就是CS:0, CS:2,CS:4,CS:6,CS:8,CS:A,CS:C,CS:E。 也就是说从CS:10H开始才是汇编指令对应
阅读全文
posted @
2018-11-06 14:16
迷心迷
阅读(142)
推荐(0)
DOS下的安全空间
摘要:我们需要直接向一段内存中写入内容; 这段内存空间不应存放系统或其他程序的数据或代码,否则写入操作很可能引发错误; DOS方式下,一般情况,0:200~0:2ff空间中没有系统或其他程序的数据或代码; 以后,我们需要直接向一段内存中写入内容时,就使用0:200~0:2ff这段空间。
阅读全文
posted @
2018-11-06 12:10
迷心迷
阅读(152)
推荐(0)
Debug和汇编编译器masm对指令的不同处理
摘要:我们在Debug和源程序中写入同样形式的指令 : "mov al,[0]","mov bl,[1]","mov cl,[2]","mov dl,[3]",但Debug和编译器对这些指令中的"[idata]"却有不同的解释。Debug将它解释为"[idata]"是一个内存单元,"idata"是内存单元
阅读全文
posted @
2018-11-06 11:49
迷心迷
阅读(221)
推荐(0)
Loop指令
摘要:CPU执行Loop指令时,要进行两步操作: (cx)=(cx)-1 判断cx中的值,不为零则转至标号处执行程序,如果为零则向下执行 通常我们用loop指令来实现循环功能,cx中存放循环次数。 用cx和loop指令向配合实现循环功能的程序框架如下: mov cx,循环次数 s: 循环执行的程序段 lo
阅读全文
posted @
2018-11-06 11:02
迷心迷
阅读(962)
推荐(0)
[BX]指令
摘要:mov ax,[bx] 功能:bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将SA:EA处的数据送入ax中。即(ax)=((ds)*16+(bx))。 mov [bx],ax 功能:bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将ax中的数据送入内存SA:EA处。即:
阅读全文
posted @
2018-11-06 10:56
迷心迷
阅读(597)
推荐(0)