本示例遇到的新汇编指令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)相关推荐

  1. Intel8086处理器使用NASM汇编语言实现操作系统04-实模式-屏幕显示不定长度的字符串(cmp/je)

    本示例遇到的新汇编指令cmp,je cmp正确写法 cmp eax,666 ;用eax里的值减去666,如果值为0,则将ZR(ZF)标志位=1;如果发生借位或进位,CF(CY)标志位=1;如果溢出,则 ...

  2. NASM汇编语言与计算机系统09-8086实模式的内存分配图

    鉴于我打算写的内容是一个循序渐进的笔记,所以作为后续文章的铺垫,了解本文图中的内存分配是很重要的,虽然不需要背下来,但是也至少能说得出个大概 下一篇:0号中断(除法错误中断) 8086实模式下的内存分 ...

  3. NASM汇编语言与计算机系统16-保护模式-全局描述符表GDT

    全局描述符表Global Descriptor Table 表中每个元素8个字节,每个元素表示一个段(代码段,数据段,栈段)的信息,且GDT在进入保护模式之前必须存在,所以它必须位于1MB以下(实模式 ...

  4. NASM汇编语言与计算机系统03-实模式-屏幕显示HelloWorld(mov,jmp,time,dd,dw,$$)

    本文涉及到的汇编指令mov,jmp,times(独有),dd(独有),dw (独有),$,$$ dd/dw times 10 dd 0 ;dd表示一个双字,在8086下占用4个字节 times 10 ...

  5. NASM汇编语言与计算机系统02-实模式-显存原理

    显卡以高频的刷新速度一直不停的扫描显存中的数据,将显存中的数据显示到屏幕上 显卡有两种模式 1.文本模式:为了方便叙述,本文的代码示例采用文本模式 2.图形模式 对于CPU来说,显存也是内存,显存的地 ...

  6. NASM汇编语言与计算机系统01-环境搭建

    使用的程序有4个,分别是 1.Nasm汇编编译器 2.Sublime文本工具(一会需要安装NASM插件) 3.VirtualBox虚拟机 4.Bochs虚拟机调试器(一个带有调试功能的虚拟机) 1.安 ...

  7. NASM汇编语言与计算机系统13-段的定义/vstart和align语法

    vstart用法 如果一个程序有a,b两个段,那么如下的程序,最后2个字节存放的是b_label距离程序起始位置段a中mov ax,1的偏移量 section amov ax,1mov ax,2a_l ...

  8. NASM汇编语言与计算机系统13-段的定义vstart和align语法

    vstart用法 如果一个程序有a,b两个段,那么如下的程序,最后2个字节存放的是b_label距离程序起始位置段a中mov ax,1的偏移量 section amov ax,1mov ax,2a_l ...

  9. NASM汇编语言与计算机系统10-中断向量表0号中断(cli/sti/iret/hlt)

    0号中断也被成为除法错误中断,本文将演示发生除法错误之后,走我们自己的代码,在屏幕上显示ByZero 中断 可屏蔽中断: 程序执行时,可以被其他事件打断,例如鼠标,键盘等事件,这种事件叫做中断,这种中 ...

最新文章

  1. ios收货地址三级联动选择
  2. 地平线将融资10亿美元,或创AI芯片融资纪录
  3. 网络管理员&MCSE2003之12:第7章 使用组策略管理用户环境(下)
  4. 【UE4】二十三、UE4笔试面试题
  5. C++知识点59——类模板(4、类模板的模板参数是一个类模板)
  6. 用owncloud 打造自己的云盘
  7. lisp xy轴不等比缩放_不就是用Python做个动态图吗?看招
  8. 数据库面试题【十一、InnoDB引擎的4大特性】
  9. Cache占用过多内存导致Linux系统内存不足问题排查
  10. rhel6.9 yum安装mysql_在RHEL6.9上安装MySQL5.7
  11. dw1000信标码_DW1000方案工牌型UWB标签,助力10厘米高精度室内定位!
  12. 安装和卸载mysql_安装和卸载mysql
  13. 为了运行内存多两G,多花几百块值不值?
  14. 精确光源(Punctual Light Sources)
  15. 重定向程序中的系统输入输出
  16. 诹图系列(3): 条形图
  17. 四巨头键盘钢琴音源完整版-Spectrasonics Keyscape v1.1.3C WiN-MAC
  18. 运维这个工作岗位还有前途吗?
  19. 计算机公式max值怎么设置,Excel 计算最大值:MAX函数详解
  20. 上传文件submit提交form表单 success返回数据多了div获取不到正确的返回数据

热门文章

  1. mysql查询问题解答_mysql查询问题
  2. 项目中出现specify @BootstrapWith‘s ‘value‘ attribute or make the default bootstrapper class avail
  3. 大学计算机学情分析,大学生学情分析
  4. java 与sas交互_SAS与MACRO的交互使用
  5. 倍周期分岔 matlab,由倍周期分岔走向混沌-Read.DOC
  6. apache字体文件跨域_在CabloyJS中将Webpack生成的文件自动上传到阿里云OSS
  7. IPLAT62--弹窗
  8. html table 转置,jQuery+CSS实现的table表格行列转置功能示例
  9. 如何优雅的在java中统计代码块耗时
  10. MYSQL8.0 排序查询报错 this is incompatible with sql_mode=only_full_group_by