摘要:
第22讲为标号和变量的属性. 标号和变量都是存储单元,只是一个存放的是指令,一个存放的是数据。 他们都有段值,段内偏移和类型。 析值操作符(数据回送操作符): 变量和标号的操作符: SEG: 获得段值。 OFFSET: 获得段内偏移 TYPE: 获得数据类型 1,BYTE。 2,WORD。 4,DWORD。 –1,NEAR。 -2,FAR。 变量的操作符: LEN... 阅读全文
摘要:
第21讲内容为数据定义语句。 定义Byte 数据 名称 DB value [,value] 定义Word数据 名称 DW value 定义DWORD数据 名称 DD value 定义字符串 名称 DB ‘value’ 重复定义 名称 DB nDUP(value) n为次数 名称 DW nDUP(value) 名称 DD nDUP(value) 定义没有初值的数据 名称 定义符 ? ... 阅读全文
摘要:
第19讲为习题课,偷懒没写。 第20讲讲第三章,开始讲伪指令。 指令的格式为 [标号] 指令助记符 [参数1] [,参数2] [;注释] 伪指令的格式为 [名称] 伪指令 [名称] [;注释] 伪指令不是程序运行指令,而是告诉汇编来做什么。伪指令的参数可以是常数或表达式。 RADIX 16可设置汇编的默认常数进制为16进制。 算术运算符: 加法(+) 减法(-) 乘法... 阅读全文
摘要:
第18讲为循环指令。 循环指令共有四组: LOOP,对CX减1后检查CX的值,如果不为0,跳转到标号 LOOPE, LOOPZ,检查是否相等或为0,如果相等或为0,跳转到标号 LOOPNE, LOOPNZ,检查是否不相等或不为0,如果不相等或不为0,跳转到标号 JCXZ,检查CX中的数是否为0,如果为0,跳转到标号。 例: BLOCK中有100字节带符号... 阅读全文
摘要:
第17讲为有条件跳转。 有条件跳转的指令通常为 J[N]+Flag 有符号数比较的判定为: 大于(G) 等于(E) 小于(L) 无符号数比较的判定为: 大于(A) 等于(E) 小于(B) X, Y 中存放为16位有符号数,将X,Y中较大的数放入AX MOV AX, X CMP AX, Y JGE SKIP MOV AX, Y SKIP: ….. 书籍TABLE处地址... 阅读全文
摘要:
第16讲为汇编的转移指令JMP 无条件段内直接跳转 JMP 标号 。 直接跳转至标号所在指令。 JMP 偏移量。跳转至当前IP + 位移量 的位置 无条件段内间接跳转 JMP OPRD。 操作数可以是通用寄存器或存储单元。跳转至OPRD地址所在内容。 无条件段间直接接跳转 JMP FAR 标号。 把标号所在地址的段地址送入cs,偏移地址送入IP。 无条件段间间接跳转 JMP FAR OPR... 阅读全文
摘要:
第15讲内容为移位操作指令。 算术左移 SAL 逻辑左移 SHL 这两个操作基本相同。SHL OPER, m 将操作数左移m位。如果m = 1,可直接写 SHL OPER, 1 如果m 1,应放入CL中。 MOV CL, 5 SHL AX, CL 算术右移 SAR 对有符号数,左边使用符号补齐。 逻辑右移 SHR 左边使用0补齐。 还有四个循环移动指令: RO... 阅读全文
摘要:
第14讲学习指令为逻辑运算指令。 NOT: NOT OPER 将操作数取反,结果送回操作数。 AND: AND OPER1, OPER2 将参数1和2进行按位与运算,运算结果送入OPER1中。运行指令后,CF = 0, OF = 0,而SF, ZF, PF反映计算结果。操作数对自身求与操作,结果不变,但可以将CF清0。 AND 操作经常用于需要将某些位置0,而其他位不... 阅读全文
摘要:
除法指令: 无符号除法DIV,有符号除法IDIV。 除法规则:用32位数除以16位数,或16位数除以8位数。 当被除数是32位时,高16位放在DX中,低16位放在AX中。被除数是16位时,放在AX中。二者的商放在低位中,余数放在高位中。 当商与除数的位数不同时,结果0号溢出。对标志位行为未定义。 符号扩展指令: CBW,把AL中的8位有符号数进行符号扩展到AH中,结果是AX... 阅读全文
摘要:
第12讲前部分继续进行加减法例子的讲解,后半部分讲乘除法. 汇编的乘除法运算指令分为有符号乘除法和无符号乘除法。 乘法指令为 MUL 和 IMUL MUL为无符号数乘法,IMUL为有符号数乘法,用法如下: MUL OP,汇编指令把一个操作数默认放在AL或AX中,而运算结果,对8位数相乘,运算结果是一个16位数,放在AX中。对16位数相乘,运算结果是一个32位数,其中高位放在DX... 阅读全文