实现正负数区分#跳转指令

Posted hello_OK

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现正负数区分#跳转指令相关的知识,希望对你有一定的参考价值。

题目要求大意:

  在数据段指定一组数据,对该组数据进行:正负分类,分别记下两类的绝对值之和与个数只和

参考代码:

include irvine32.inc
.data
	arr dd 0,-1,1,-2,2,-3,3
	count dd ($-arr)/4
	sum1 dd 0
	sum2 dd 0
	cou1 dd 0
	cou2 dd 0
	I dd -1
	;1表示正记录,2表示负记录
.code
main PROC
	lea esi,arr
	mov ecx,0
	
	;把每个数据取出
lop:	mov ebx,[esi+4*ecx]
	add ecx,1

	;判断正负数
	cmp ebx,0
	jl L1			;本来用neg编译错误	;跳到负数情况

	add sum1,ebx		;正数情况
	add cou1,1
	jmp next

L1:	add sum2,ebx
	add cou2,1
	jmp next

next:	cmp ecx,count
	jb lop
	mov eax,sum2
	imul I			;带符号乘法
	mov sum2,eax
;11111111111111111111111111111111111111111111111111111111111111
	mov eax,666666
	call writeint
	push eax
	mov eax,sum2		;11111111111111test
	call writeint		;11111111111111
	pop eax
	push eax
	mov eax,cou2		;11111111111111test
	call writeint		;11111111111111
	pop eax
	push eax
	mov eax,sum1		;11111111111111test
	call writeint		;11111111111111
	pop eax
	push eax
	mov eax,cou1		;11111111111111test
	call writeint		;11111111111111
	pop eax
	mov eax,9999999
	call writeint
;2222222222222222222222222222222222222222222222222222222222222222
	
	exit
main ENDP
end main

跳转指令:

(该部分来自:https://www.cnblogs.com/del/archive/2010/04/16/1713886.html

JE   ;等于则跳转
JNE  ;不等于则跳转

JZ   ;为 0 则跳转
JNZ  ;不为 0 则跳转

JS   ;为负则跳转
JNS  ;不为负则跳转

JC   ;进位则跳转
JNC  ;不进位则跳转

JO   ;溢出则跳转
JNO  ;不溢出则跳转

JA   ;无符号大于则跳转
JNA  ;无符号不大于则跳转
JAE  ;无符号大于等于则跳转
JNAE ;无符号不大于等于则跳转

JG   ;有符号大于则跳转
JNG  ;有符号不大于则跳转
JGE  ;有符号大于等于则跳转
JNGE ;有符号不大于等于则跳转

JB   ;无符号小于则跳转
JNB  ;无符号不小于则跳转
JBE  ;无符号小于等于则跳转
JNBE ;无符号不小于等于则跳转

JL   ;有符号小于则跳转
JNL  ;有符号不小于则跳转
JLE  ;有符号小于等于则跳转
JNLE ;有符号不小于等于则跳转

JP   ;奇偶位置位则跳转
JNP  ;奇偶位清除则跳转
JPE  ;奇偶位相等则跳转
JPO  ;奇偶位不等则跳转

 

以上是关于实现正负数区分#跳转指令的主要内容,如果未能解决你的问题,请参考以下文章

补码条件跳转指令

我如何获得负股息的正模数

(转) Java中的负数及基本类型的转型详解

C语言计算器 功能要求: 可以输入0-9数字、小数点、正负数 可以进行加减乘除运算及简单的数学函数运算?

获取码值和进制转换系统(包括正负数小数)

急!用html编写的跳转页面倒计时,时间都减到负数了还不跳转,求各位大神帮助!!代码如下!