一:显示的原理

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.汇编语言显示、指令相关推荐

  1. leaq c 汇编语言,汇编语言lea指令使用方法解析

    这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 lea指令变种(按大小分类): leaw #2个字节 ...

  2. 汇编语言中xor指令_汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作(推荐)...

    汇编语言 汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号 ...

  3. linux汇编 lea,汇编语言lea指令使用方法解析

    这篇文章主要介绍了汇编语言lea指令使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 lea指令变种(按大小分类): leaw #2个字节 ...

  4. 我的世界java版区块显示_我的世界手游区块显示指令分享:区块玩法操作详解[多图]...

    我的世界手游区块是一个独特的机制,很多玩家对于区块是什么不太了解,区块显示指令以及区块的产生不是很熟悉,为了帮助到大家,今天小编就为大家带来我的世界手游区块显示指令分享:区块玩法操作详解的内容,希望大 ...

  5. 汇编语言常用指令汇总(持续更新)

    汇编语言常用指令汇总(持续更新) 通用数据传送指令 累加器专用指令 有效地址送寄存器指令 标志寄存器传送指令 加法指令 减法指令 乘法指令 除法指令 逻辑指令 移位指令 通用数据传送指令 MOV(Mo ...

  6. 汇编语言编译器masm_计算机汇编语言和指令操作

    机器语言 每种类型的CPU都能理解它们自己的机器语言.机器语言里的指令是以字节形式在内存中储存的数字.每条指令有它唯一的数字码称为操作代码,或简称为操作码.80x86处理器的指令大小不同.操作码通常是 ...

  7. 浮点数不能全等比较吗php,汇编语言FCOM指令:比较浮点数值

    浮点数不能使用 CMP 指令进行比较,因为后者是通过整数减法来执行比较的.取而代之,必须使用 FCOM 指令. 执行 FCOM 指令后,还需要采取特殊步骤,然后再使用逻辑 IF 语句中的条件跳转指令( ...

  8. 汇编语言--call 指令

    call指令经常跟ret指令配合使用,因此CPU执行call指令,进行两步操作: 将当前的 IP 或 CS和IP 压入栈中: 转移(jmp). call指令不能实现短转移,除此之外,call指令实现转 ...

  9. 汇编语言--loop指令

    loop指令为循环指令,所有的循环指令都是短转移,在对应的机器码中包含转移的位移,而不是目的地址. 对IP的修改范围都为-128~127. 指令格式:loop 标号 ((cx) = (cx) - 1, ...

最新文章

  1. 2015年美军将具备60分钟内打击全球目标能力(图)
  2. MongoDB开发学习开天辟地,经典入门
  3. MyBatis 多参数传递
  4. [Web 前端] 解决因inline-block元素导致的空白间距和元素下沉
  5. php mysql 中文_PHP连接MySQL查询结果中文显示乱码解决方法
  6. Java 目录操作二(获取文件的上级目录、获取目录最后修改时间、打印目录结构、遍历指定目录下的所有目录)
  7. 网易手游《幻书启世录》将于2022年2月14日停止运营
  8. python读取matlab数据_两分钟搞定Python读取matlab的.mat数据
  9. Android Q Labs| Android Q 分区存储
  10. dcdc转换器计算机显示,DC-DC转换器的问题
  11. 饶阳彻查“黑砖窑”事件 卡酷族×××涉案人
  12. js视频播放器/video详解
  13. 黑马程序员与兄弟连兄弟会的对比
  14. 高仿知乎android,Android高仿知乎首页Behavior
  15. 水果店的开业活动怎么做,水果店开业活动朋友圈怎么发
  16. Unity学习笔记-I2 localization
  17. 股票北向资金数据接口在哪里?
  18. 【深度学习】平移不变性 (translation invariant)
  19. 最受欢迎的五大bug管理平台
  20. Web前端开发之HTML篇

热门文章

  1. 自建题库刷题小程序,添加更丰富的练习设置,模糊选项、自动切题、夜间模式、答题音效、答对移除错题、练习完交卷后统计正确率
  2. CSS实现横向图片滚动播放
  3. C# UDP实现数据收发
  4. 数据中台数据分层架构
  5. c++实现strstr函数
  6. 达内学软件测试发证书吗,达内软件测试培训让我拥有了实际工作经验
  7. 华为鸿蒙P60(art)系列,Mate X3安装谷歌服务框架,安装Google谷歌Play商店,harmonyos3.1
  8. 阅读整理笔记,正能量
  9. 怎么限制使用计算机软件,如何禁止计算机用户使用IE浏览器
  10. Android多用户相关命令,android 5.0 创建多用户 双开多开应用(1)(示例代码)