6.汇编语言显示、指令
一:显示的原理
1.在屏幕中显示的内容来自显存中的数据
2.低位后8个高位前8个
3.在屏幕中显示
二:代码直接定址表
assume cs:code
code segmenta : db 1,2,3,4,5,6,7,8 ;在后面加有“:”的地址标号,只能在代码段中使用,不能在其他段中使用。b : dw 0
start :mov si,offset amov bx,offset bmov cx,8s : mov al,cs:[si]mov ah,0add cs:[bx],axinc siloop smov ax,4c00hint 21h
code ends
end start
程序中,code、a、b、start、s都是标号。这些标号仅仅表示了内存单元的地址描述了单位长度的标号
assume cs:code
code segmenta db 1,2,3,4,5,6,7,8 ;标号a、b后面没有":",因此它们是可以同时描述内存地址和单元长度的标号。;标号a,描述了地址code:0,和从这个地址开始,以后的内存单元都是字节单元b dw 0 ;标号b描述了地址code:8,和从这个地址开始,以后的内存单元都是字单元。
start : mov si,0mov cx,8s : mov al,a[si]mov ah,0add b,axinc siloop smov ax,4c00hint 21h
code ends
end start
使用数据标号来描述存储数据的单元的地址和长度。
assume cs:code,ds:data ;用伪指令assume将标号所在的段和一个段寄存器
联系起来(编译器需要)
data segment a db 1,2,3,4,5,6,7,8b dw 0
data ends
code segment
start: mov ax,datamov ds,ax ;真正确定ds寄存器mov si,0mov cx,8
s: mov al,a[si] ;编译为:mov al,[si+0] 默认所访问单元的段地址在dsmov ah,0add b,ax ;编译为:add [8],axinc siloop smov ax,4c00hint 21h
code ends
end start
data segmenta db 1,2,3,4,5,6,7,8b dw 0c dw a, b ;等价于c dw offset a, offset b;数据标号c处存储的两个字型数据为标号a、b 的偏移地址
data endsdata segmenta db 1,2,3,4,5,6,7,8b dw 0c dd a,b ;等价于c dw offset a, seg a, offset b, seg b;数据标号c处存储的两个双字型数据为标号a的偏移地址和段地址、标号b 的偏移地址和段地址
data ends
seg操作符,功能为取得某一标号的段地址
建立一张表,表中依次存储字符“0”~“F”,我们可以通过数值0 ~ 15直接查找到对应的字符
assume cs:codecode segment
start: mov al,0ehcall showbytemov ax,4c00hint 21h;子程序:
;用al传送要显示的数据showbyte:jmp short showtable db '0123456789ABCDEF' ;字符表show: push bxpush esmov ah,alshr ah,1 shr ah,1shr ah,1shr ah,1 ;右移4位,ah中得到高4位的值and al,00001111b ;al中为低4位的值mov bl,ahmov bh,0mov ah,table[bx] ;用高4位的值作为相对于table的偏移,取得对应的字符mov bx,0b800hmov es,bxmov es:[160*12+40*2],ahmov bl,almov bh,0mov al,table[bx] ;用低4位的值作为相对于table的偏移,取得对应的字符mov es:[160*12+40*2+2],alpop espop bxretcode ends
end start
三:外部设备与如何被控制
四:指令总结
8086CPU提供以下几大类指令。
1.数据传送指令
mov、push、pop、pushf、popf、xchg 等都是数据传送指令,这些指令实现寄存器和内存、寄器和寄存器之间的单个数据传送。
2.算术运算指令
add、sub、adc、sbb、inc、dec、cmp、imul、idiv、aaa等都是算术运算指令,这些指令实现存器和内存中的数据的算数运算。它们的执行结果影响标志寄存器的sf、zf、of、cf、pf、af位。
3.逻辑指令
and、or、not、xor、test、shl、shr、sal、sar、rol、ror、rcl、rcr等都是逻辑指令。除了not指外,它们的执行结果都影响标志寄存器的相关标志位。
4.转移指令
可以修改IP,或同时修改CS和IP的指令统称为转移指令。转移指令分为以下几类。
(1)无条件转移指令,比如,jmp;
(2)条件转移指令,比如,jcxz、je、jb、ja、jnb、jna等;
(3)循环指令,比如,loop;
(4)过程,比如,call、ret、retf;
(5)中断,比如,int、iret。
5.处理机控制指令
对标志寄存器或其他处理机状态进行设置,cld、std、cli、sti、nop、clc、cmc、stc、hlt、wait、esc、lock等都是处理机控制指令。
6.串处理指令
对内存中的批量数据进行处理,movsb、movsw、cmps、scas、lods、stos等。若要使用这些指令方便地进行批量数据的处理,则需要和rep、repe、repne 等前缀指令配合使用。
6.汇编语言显示、指令相关推荐
- leaq c 汇编语言,汇编语言lea指令使用方法解析
这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 lea指令变种(按大小分类): leaw #2个字节 ...
- 汇编语言中xor指令_汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作(推荐)...
汇编语言 汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号 ...
- linux汇编 lea,汇编语言lea指令使用方法解析
这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 lea指令变种(按大小分类): leaw #2个字节 ...
- 我的世界java版区块显示_我的世界手游区块显示指令分享:区块玩法操作详解[多图]...
我的世界手游区块是一个独特的机制,很多玩家对于区块是什么不太了解,区块显示指令以及区块的产生不是很熟悉,为了帮助到大家,今天小编就为大家带来我的世界手游区块显示指令分享:区块玩法操作详解的内容,希望大 ...
- 汇编语言常用指令汇总(持续更新)
汇编语言常用指令汇总(持续更新) 通用数据传送指令 累加器专用指令 有效地址送寄存器指令 标志寄存器传送指令 加法指令 减法指令 乘法指令 除法指令 逻辑指令 移位指令 通用数据传送指令 MOV(Mo ...
- 汇编语言编译器masm_计算机汇编语言和指令操作
机器语言 每种类型的CPU都能理解它们自己的机器语言.机器语言里的指令是以字节形式在内存中储存的数字.每条指令有它唯一的数字码称为操作代码,或简称为操作码.80x86处理器的指令大小不同.操作码通常是 ...
- 浮点数不能全等比较吗php,汇编语言FCOM指令:比较浮点数值
浮点数不能使用 CMP 指令进行比较,因为后者是通过整数减法来执行比较的.取而代之,必须使用 FCOM 指令. 执行 FCOM 指令后,还需要采取特殊步骤,然后再使用逻辑 IF 语句中的条件跳转指令( ...
- 汇编语言--call 指令
call指令经常跟ret指令配合使用,因此CPU执行call指令,进行两步操作: 将当前的 IP 或 CS和IP 压入栈中: 转移(jmp). call指令不能实现短转移,除此之外,call指令实现转 ...
- 汇编语言--loop指令
loop指令为循环指令,所有的循环指令都是短转移,在对应的机器码中包含转移的位移,而不是目的地址. 对IP的修改范围都为-128~127. 指令格式:loop 标号 ((cx) = (cx) - 1, ...
最新文章
- 2015年美军将具备60分钟内打击全球目标能力(图)
- MongoDB开发学习开天辟地,经典入门
- MyBatis 多参数传递
- [Web 前端] 解决因inline-block元素导致的空白间距和元素下沉
- php mysql 中文_PHP连接MySQL查询结果中文显示乱码解决方法
- Java 目录操作二(获取文件的上级目录、获取目录最后修改时间、打印目录结构、遍历指定目录下的所有目录)
- 网易手游《幻书启世录》将于2022年2月14日停止运营
- python读取matlab数据_两分钟搞定Python读取matlab的.mat数据
- Android Q Labs| Android Q 分区存储
- dcdc转换器计算机显示,DC-DC转换器的问题
- 饶阳彻查“黑砖窑”事件 卡酷族×××涉案人
- js视频播放器/video详解
- 黑马程序员与兄弟连兄弟会的对比
- 高仿知乎android,Android高仿知乎首页Behavior
- 水果店的开业活动怎么做,水果店开业活动朋友圈怎么发
- Unity学习笔记-I2 localization
- 股票北向资金数据接口在哪里?
- 【深度学习】平移不变性 (translation invariant)
- 最受欢迎的五大bug管理平台
- Web前端开发之HTML篇
热门文章
- 自建题库刷题小程序,添加更丰富的练习设置,模糊选项、自动切题、夜间模式、答题音效、答对移除错题、练习完交卷后统计正确率
- CSS实现横向图片滚动播放
- C# UDP实现数据收发
- 数据中台数据分层架构
- c++实现strstr函数
- 达内学软件测试发证书吗,达内软件测试培训让我拥有了实际工作经验
- 华为鸿蒙P60(art)系列,Mate X3安装谷歌服务框架,安装Google谷歌Play商店,harmonyos3.1
- 阅读整理笔记,正能量
- 怎么限制使用计算机软件,如何禁止计算机用户使用IE浏览器
- Android多用户相关命令,android 5.0 创建多用户 双开多开应用(1)(示例代码)