NASM汇编语言与计算机系统04-实模式-屏幕显示不定长度的字符串(cmp/je)
本示例遇到的新汇编指令cmp,je
cmp正确写法
cmp eax,666
cmp eax,ebx
cmp byte [123], 123
cmp错误写法
cmp 123,123 ;操作数不可以都是立即数
cmp [0x7c00],[0x7c01] ;操作数不可以都是内存地址
cmp [0x7c00], 666 ;操作数不知道有多长
je正确写法
;标号跳转
there:
cmp byte [si], 0x01 ;不要忘记了si默认使用ds段寄存器
je there
;寄存器跳转
je eax ;直接跳转到物理地址,与段寄存器无关
本文演示定义一个字符串,然后循环取出字符串的每个字符,依次放到显存(0xb8000开始)中
mov ax,0xb800 ;设置ds/si组合,表示显存的段和偏移
mov ds,ax
mov si,0x0mov ax,0x7c0 ;设置es/bx组合,用来表示字符串
mov es,axmov bx,string ;bx是字符串起始地址print:mov dl,[es:bx] ;将bx地址中的字符串放到dl中
cmp dl,0 ;判断字符串内容是否是0
je do_not_stop ;如果0就结束,直接跳走了,否则就将内容显示到屏幕上
mov byte [si],dl
inc si
mov byte [si],0bH
inc si
inc bx
jmp print
string db 'Hello World!!I Love Rabbit'
stringend db 0x00
do_not_stop:jmp do_not_stop ;执行无限循环
times 510-($-$$) db 0hdw 0AA55H
NASM汇编语言与计算机系统04-实模式-屏幕显示不定长度的字符串(cmp/je)相关推荐
- Intel8086处理器使用NASM汇编语言实现操作系统04-实模式-屏幕显示不定长度的字符串(cmp/je)
本示例遇到的新汇编指令cmp,je cmp正确写法 cmp eax,666 ;用eax里的值减去666,如果值为0,则将ZR(ZF)标志位=1;如果发生借位或进位,CF(CY)标志位=1;如果溢出,则 ...
- NASM汇编语言与计算机系统09-8086实模式的内存分配图
鉴于我打算写的内容是一个循序渐进的笔记,所以作为后续文章的铺垫,了解本文图中的内存分配是很重要的,虽然不需要背下来,但是也至少能说得出个大概 下一篇:0号中断(除法错误中断) 8086实模式下的内存分 ...
- NASM汇编语言与计算机系统16-保护模式-全局描述符表GDT
全局描述符表Global Descriptor Table 表中每个元素8个字节,每个元素表示一个段(代码段,数据段,栈段)的信息,且GDT在进入保护模式之前必须存在,所以它必须位于1MB以下(实模式 ...
- NASM汇编语言与计算机系统03-实模式-屏幕显示HelloWorld(mov,jmp,time,dd,dw,$$)
本文涉及到的汇编指令mov,jmp,times(独有),dd(独有),dw (独有),$,$$ dd/dw times 10 dd 0 ;dd表示一个双字,在8086下占用4个字节 times 10 ...
- NASM汇编语言与计算机系统02-实模式-显存原理
显卡以高频的刷新速度一直不停的扫描显存中的数据,将显存中的数据显示到屏幕上 显卡有两种模式 1.文本模式:为了方便叙述,本文的代码示例采用文本模式 2.图形模式 对于CPU来说,显存也是内存,显存的地 ...
- NASM汇编语言与计算机系统01-环境搭建
使用的程序有4个,分别是 1.Nasm汇编编译器 2.Sublime文本工具(一会需要安装NASM插件) 3.VirtualBox虚拟机 4.Bochs虚拟机调试器(一个带有调试功能的虚拟机) 1.安 ...
- NASM汇编语言与计算机系统13-段的定义/vstart和align语法
vstart用法 如果一个程序有a,b两个段,那么如下的程序,最后2个字节存放的是b_label距离程序起始位置段a中mov ax,1的偏移量 section amov ax,1mov ax,2a_l ...
- NASM汇编语言与计算机系统13-段的定义vstart和align语法
vstart用法 如果一个程序有a,b两个段,那么如下的程序,最后2个字节存放的是b_label距离程序起始位置段a中mov ax,1的偏移量 section amov ax,1mov ax,2a_l ...
- NASM汇编语言与计算机系统10-中断向量表0号中断(cli/sti/iret/hlt)
0号中断也被成为除法错误中断,本文将演示发生除法错误之后,走我们自己的代码,在屏幕上显示ByZero 中断 可屏蔽中断: 程序执行时,可以被其他事件打断,例如鼠标,键盘等事件,这种事件叫做中断,这种中 ...
最新文章
- ios收货地址三级联动选择
- 地平线将融资10亿美元,或创AI芯片融资纪录
- 网络管理员&MCSE2003之12:第7章 使用组策略管理用户环境(下)
- 【UE4】二十三、UE4笔试面试题
- C++知识点59——类模板(4、类模板的模板参数是一个类模板)
- 用owncloud 打造自己的云盘
- lisp xy轴不等比缩放_不就是用Python做个动态图吗?看招
- 数据库面试题【十一、InnoDB引擎的4大特性】
- Cache占用过多内存导致Linux系统内存不足问题排查
- rhel6.9 yum安装mysql_在RHEL6.9上安装MySQL5.7
- dw1000信标码_DW1000方案工牌型UWB标签,助力10厘米高精度室内定位!
- 安装和卸载mysql_安装和卸载mysql
- 为了运行内存多两G,多花几百块值不值?
- 精确光源(Punctual Light Sources)
- 重定向程序中的系统输入输出
- 诹图系列(3): 条形图
- 四巨头键盘钢琴音源完整版-Spectrasonics Keyscape v1.1.3C WiN-MAC
- 运维这个工作岗位还有前途吗?
- 计算机公式max值怎么设置,Excel 计算最大值:MAX函数详解
- 上传文件submit提交form表单 success返回数据多了div获取不到正确的返回数据
热门文章
- mysql查询问题解答_mysql查询问题
- 项目中出现specify @BootstrapWith‘s ‘value‘ attribute or make the default bootstrapper class avail
- 大学计算机学情分析,大学生学情分析
- java 与sas交互_SAS与MACRO的交互使用
- 倍周期分岔 matlab,由倍周期分岔走向混沌-Read.DOC
- apache字体文件跨域_在CabloyJS中将Webpack生成的文件自动上传到阿里云OSS
- IPLAT62--弹窗
- html table 转置,jQuery+CSS实现的table表格行列转置功能示例
- 如何优雅的在java中统计代码块耗时
- MYSQL8.0 排序查询报错 this is incompatible with sql_mode=only_full_group_by