Neeke

伪全栈攻城狮

汇编3

假设X、Y均为存放在X和Y单元中的16位操作数,先判断X是否大于50,如满足条件则转移到TOO-HIGH去执行,然后求X-Y,如溢出则转移到OVER去执行,否则计算|X-Y|,并把结果存入RESULT中。
MOV AX,X
CMP AX,50	;立即数不能直接比大小,所以先将X放入AX中
JG TOO-HIGH	;转移到TOO-HIGH
SUB AX,Y	;求X-Y
JO OVER		;判断是否溢出,溢出则跳转到OVER
JNS NONEG	;判断结果是否为正数,为正则跳转到NONE
NEG AX		;取绝对值,即|X-Y|
NONEG:
MOV RESULT,AX	;保存结果到RESULT
假设有100个16位无符号数存放在1234:5678H开始的内存中,现要求他们的和。设把32位的和保存在DX(高位)和AX寄存器中。
MOV AX,1234H
MOV DS,AX	;DS不能直接赋立即数,所以需要先存储在AX中
MOV SI,5678H	;指针初始化
MOV AX,0	;进行清0初始化
MOV DX,AX
MOV CX,100	;CX作为计数器
NEXT:
ADD AX,[SI]	;	求和
ADC DX,0	;考虑进位
ADD SI,2	;指针下移2,因为是32位,所以不是下移1
DEC CX		;计数器减1
JNZ NEXT	;如果CX不为0,则跳转到NEXT累加下一个数据
在存储器中有一个首地址为ARRAY的N字数组,要求测试其中正数、0、及负数的个数。正数的个数存放在DI中,0的个数存放在SI中,并根据N-(DI)-(SI)求得负数的个数放在AX中,如果有负数则转移到VAL中去执行。
MOV CX,N
MOV BX,0
MOV DI,BX
MOV SI,BX
AGAIN:
CMP ARRAY[BX],0
JLE LESS
INC DI
JMP SHORT NEXT
LESS:
JL NEXT
INC SI
NEXT:ADD BX,2
DEC CX
JNZ AGAIN
MOV AX,N
SUB AX,DI
SUB AX,SI
JZ SKIP
JMP NEAR PTR VAL

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«   2017年8月   »
123456
78910111213
14151617181920
21222324252627
28293031
网站分类
搜索
控制面板
您好,欢迎到访网站!
  查看权限
最新留言
文章归档
友情链接

Powered By Z-BlogPHP 1.5.1 Zero

Copyright Your WebSite.Some Rights Reserved.