伪指令(pseudo instruction)是用于对汇编过程进行控制的指令,是在编译阶段发挥作用的,由汇编器(MASM、TASM等)来解释。 指令:是在执行阶段发挥作用的,由CPU执行。 1个8086CPU的寄存器均是16位的,而数据类型有以下两种: 1 Byte = 8bit 1字节 1 word = 2 Byte = 16 bit 1个字
;eg1.将字符串string中的所有数字加密。 assume cs:code,ds:data data segment string db '123Hello!' data ends code segment start: mov ax,data mov ds,ax ;ds和cs等段地址寄存器不支持将数据直接写入,必须通过其他寄存器中转 mov bx,offset string ;返回string的偏移地址并将其赋值给寄存器bx ;bx相当于一个变量,指向字符串(即字符数组)的首地址,故只需将bx自增1就可以访问下一个字符 x1: mov cl,ds:[bx] ;将字符串首地址中的字符的ASC码取出并赋值到寄存器cx的低位 cmp cl,'0' ;将字符串首字符的ASC码跟数字0的ASC码比较大小 jb x2 ;若前者小于后者,则说明该字符不是数字,跳到x2 cmp cl,'9' ;将字符串首字符的ASC码跟数字9的ASC码比较大小 ja x2 ;若前者大于后者,则说明该字符不是数字,跳到x2 inc cl ;若字符处于0到9之间,则对其进行加密处理,这里加密简化为将其ASC码自增1 mov [bx],cl ;将加密后的字符重新写回寄存器ds inc bx ;将bx自增1,顺序访问下一个字符;只需自增8次即可访问完所有字符 cmp bx,9 ;判断偏移量是否超过字符串长度9 jb x1 ;若未超过,则说明未访问完所有字符,便重新进入循环体x1 x2: ;对不是数字的字符不进行任何处理 code ends end start截图:
总结 本来很讨厌微机原理这门课,因为好多不懂,觉得很难,想逃避。 我总是逃避,这几乎成为我的固定模式了,不管遇到什么事情都是下意识逃避。 这样太不好了,越是抗拒的东西越是会持续。我应该直面这种无力感,明白抗拒和逃避是徒劳,慢慢跳出这样的人生模式。干巴爹!!!