汇编程序的CMPSB CMPSW CMPSD的使用

;**********************************************************
TITLE CMPSB CMPSW CMPSD
;**********************************************************


;**********************************************************
;程序运行平台说明
.386
.MODEL FLAT,STDCALL
OPTION CASEMAP:NONE
;**********************************************************


;**********************************************************
;文件包含
INCLUDE Irvine32.inc
;**********************************************************



;**********************************************************
;数据段定义
.DATA
strbS byte "This is byte source string",0;s的ascii是115
strbD byte "This is byte Destiantion string",0;D的ascii是68

strwS word 12,145,15,45,15,45,0
strwD word 125,15,451,25,1515,2,0

strdS dword 14,15,151,515,450,0
strdD dword 1,15,12,51,51,215,0

strb1 byte "strbS比较大",0dh,0ah,0
strb2 byte "strbD比较大",0dh,0ah,0
strw1 byte "strwS比较大",0dh,0ah,0
strw2 byte "strwD比较大",0dh,0ah,0
strd1 byte "strdS比较大",0dh,0ah,0
strd2 byte "strdD比较大",0dh,0ah,0
;**********************************************************



;**********************************************************
;代码段定义
.CODE
main proc
   ;cmpsb
   mov esi,offset strbS
   mov edi,offset strbD
   mov ecx,sizeof strbS
   cld
   repe cmpsb
   ja BLarger;
   mov edx,offset strb2
   call WriteString
   jmp TESTCMPSW
   BLarger:
     mov edx,offset strb1
	 call WriteString
  TESTCMPSW:

  mov esi,offset strwS
  mov edi,offset strwD
  mov ecx,(sizeof strwS)/2
  cld
  repe cmpsw
  ja WLarger
  mov edx,offset strw2
  call WriteString
  jmp TESTCMPSD
  WLarger:
    mov edx,offset strw1
	call WriteString
  
  
  TESTCMPSD:
  mov esi,offset strdS
  mov edi,offset strdD
  mov ecx,(sizeof strdS)/4
  cld
  repe cmpsd
  ja DLarger
  mov edx,offset strd2
  call WriteString
  DLarger:
    mov edx,offset strd1
	call WriteString 
  

  exit
main endp
end main 
;**********************************************************

PS:这里面和MOVSB  MOVSW   MOVSD使用是一样的,但是后者使用了rep,这里使用了repe,

暂时只看到了 rep适用于 movsb movsw movsd三者

而repe适用于 cmpsb cmpsw cmpsd和后面要说的几项,使用情况不同,或者说根本没什么关系???


PS:PS: cmpsb cmpsw cmpsd和cmp是一样的,都是在ecx!=0的情况下从第一操作减去第二操作数,如果不相等的话,则停止循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世纪殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值