两个数的比较 汇编 汇编语言中如何计算出两个数的比例

\u6c47\u7f16\u8bed\u8a00\u4e2d\u600e\u4e48\u6bd4\u8f83\u4e24\u4e2a\u5341\u8fdb\u5236\u6570\u7684\u5927\u5c0f?

\u673a\u5668\u53ea\u67092\u8fdb\u5236\uff0c
\u5b9e\u5728\u53c2\u6570\u662f\u5341\u8fdb\u5236\u5b57\u7b26\u5c31\u7528\u4e2a\u5b57\u7b26\u8868\u6765\u53d6\u503c\u3002
\u6bd4\u8f83\u4e00\u822c\u4e3a
mov eax,[a] ;\u5f97\u5230\u53d8\u91cfA 32\u4f4d
CMP eax,[b] ;\u6bd4\u8f83EAX\u4e0eB 32\u4f4d; 16\u4f4d\u7528AX\u4e4b\u7c7b.
jae FunA ;\u9ad8\u4e8e\u7b49\u4e8e\u8f6cFunA;\u6216\u7528JG JGE\u6548\u679c
jmp FunB ;\u5176\u5b83\u8f6cFunB\u4e5f\u53ef\u4ee5\u6539\u6210 jbe FunB jmp FunA

;\u9644\u8df3\u8f6c\u6307\u4ee4\u542b\u4e49
;J \u4ee3\u8868\u8df3\u8f6c A\u4ee3\u8868\u9ad8\u4e8e B\u4ee3\u8868\u4f4e\u4e8e E\u7b49\u4e8e N\u5426\u975e Z\u96f6 G\u5927\u4e8e L\u5c0f\u4e8e

;JG\u53ef\u80fd\u662f\u7528\u4e8e\u6709\u7b26\u6bd4\u8f83\uff0cJA\u53ef\u80fd\u662f\u65e0\u7b26\u6bd4\u8f83\uff0c\u8fd9\u4e2a\u6709\u70b9\u5fd8\u4e86\uff0c\u4f60\u8bd5\u9a8c\u4e0b\u3002
\u4ee5\u4e0a\u4ee3\u7801\u7528\u7684\u662fNASM\uff0c\u5982\u679c\u662f\u5176\u5b83\u7f16\u8bd1\u5668\uff0c\u8bf7\u81ea\u884c\u8c03\u6574\u3002

\u767e\u5206\u6bd4\uff0c\u7ed3\u679c\u4e2d\u542b\u6709\u5c0f\u6570\uff0c\u6b65\u9aa4\u5982\u4e0b\uff1a
MOV EAX, 60MOV ECX, 0A0H ;160\uff0c\u767e\u5206\u6bd4\uff1d0.375 = 37.5%XOR EDX, EDXDIV ECX ;\u5546\u6570EAX=0\uff0c\u4f59\u6570EDX=60MOV N1, EAX ;\u5b58\u6574\u65700;---------------------------------------MOV EAX, 10MUL EDX ;\u4f59\u6570\u4e58\u4ee510=600XOR EDX, EDXDIV ECX ;\u5546\u6570EAX=3\uff0c\u4f59\u6570EDX=120MOV N2, EAX ;\u5b58\u7b2c\u4e00\u4f4d\u5c0f\u65703;---------------------------------------MOV EAX, 10MUL EDX ;\u4f59\u6570\u4e58\u4ee510=1200XOR EDX, EDXDIV ECX ;\u5546\u6570EAX=7\uff0c\u4f59\u6570EDX=80MOV N3, EAX ;\u5b58\u7b2c\u4e8c\u4f4d\u5c0f\u65707;---------------------------------------MOV EAX, 10MUL EDX ;\u4f59\u6570\u4e58\u4ee510=800XOR EDX, EDXDIV ECX ;\u5546\u6570EAX=5\uff0c\u4f59\u6570EDX=0MOV N4, EAX ;\u5b58\u7b2c\u4e09\u4f4d\u5c0f\u65705;---------------------------------------MOV EAX, 10MUL N2 ;EAX=30ADD EAX, N3 ;EAX=37 ;\u767e\u5206\u6bd4\u7684\u6574\u6570\u90e8\u5206;N1\u3001N4\uff0c\u4f60\u8fd8\u8981\u5417\uff1fEND

汇编语言中比较两个操作数大小的指令是:CMP 目标操作数,源操作数

CMP指令类似于减法指令SUB,用目标操作数减去源操作数,但它不将结果存入目标操作数,而只是根据结果设置相应的标志位。通常情况下,CMP指令的后面总要跟上一条或多条条件转移指令,以实现相应的判断分支。

CMP 用法楼上说的很清楚了,我补充一点:
目标操作数减去源操作数,但它不将结果存入目标操作数(即执行后a,b不变),而只是根据结果设置相应的标志位。如有跳转,有符号数就看OF,SP。无符号数看CF。跳转指令很多,要学记下来很难,你去参考一下吧。
还有一种就是用来和零比较的。TEST A,B:就是对A,B进行AND运算,不改变原数,只改变标志位,常用于TEST EAX,EAX测试A是不是为零。还有一个就是OR,也和TEST差不多。

cmp a,b
就是比较a,b的指令,
结果反映在标志寄存器上面!

扩展阅读:1 3 6的规律后面是几 ... 汇编判断两个数大小 ... 0与 0 表示同一个集合 ... 1 0 -1 0后面是什么数字 ... 把3 11九个数填入下面表中 ... 数组a[ ] ... 用自己的方式表示出4-1 3 ... 汇编怎么比较两个数 ... 汇编比较两个数a和b的大小 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网