汇编语言上机实验:编写一个程序,要求比较数组ARRAY中的三个16位补码数

汇编语言上机实验2

5.4 试编写一个程序,要求比较数组ARRAY中的三个16位补码数,并根据比较结果在终端上显示如下信息:
(1) 如果三个数都不相等则显示0;
(2) 如果三个数有两个相等则显示1;
(3) 如果三个数都相等则显示2.

data segment
array1 db "1000000000000000"     ;初始化字符串1
array2 db "1000000000000000"	 ;初始化字符串2
array3 db "1000000000000000"	 ;初始化字符串3
ans1   db "output is: 0$"                   ;比较结果0
ans2   db "output is: 1$"                   ;比较结果1
ans3   db "output is: 2$"                   ;比较结果2
data ends

code segment
assume cs:code,ds:data,es:data
start:mov ax,data
      mov ds,ax
      mov es,ax

      mov cx,8			;八次循环比较
      mov si,offset array1	;字符串1偏移地址
      mov di,offset array2	;字符串2偏移地址

      repz cmpsb		;比较ds:si和es:di所指向的两个字节
      jnz onesame1not		;字符串1和字符串2不等
      jz  twosame  		;字符串1和字符串2相等

twosame:mov cx,8		
      mov si,offset array2	;字符串1和字符串2相等,比较字符串2和字符串3
      mov di,offset array3
      repz cmpsb
      jz  threesame		;三个字符串相等
      jnz twosame1not		;两个字符串相等,一个不同

threesame:mov dx,offset ans3	;三个字符串相等,输出结果2
      mov ah,09h
      int 21h
      jmp exit

twosame1not:
      mov dx,offset ans2       ;两个字符串相等,输出结果1
      mov ah,09h
      int 21h
      jmp exit

threenot:mov dx,offset ans1     ;三个字符串都不相等,输出结果0
      mov ah,09h
      int 21h
      jmp exit

onesame1not:
      mov cx,8
      mov si,offset array3	;字符串1和字符串2不相等前提下
      mov di,offset array2	;比较字符串2和字符串3
      repz cmpsb
      jz twosame1not		;字符串2和字符串3相等
      jnz test1			;字符串2和字符串3不相等

test1:mov cx,8
      mov si,offset array3	;字符串1和字符串2不相等,字符串2和字符串3不相等,比较字符串1和字符串3
      mov di,offset array1
      repz cmpsb                
      jnz threenot		;三个字符串都不相等
      jz twosame1not		;字符串1和字符串3相等
     
exit:  mov ax,4c00h
       int 21h
code ends
end start

效果图:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值