2.txt
上传用户:lgm502529
上传日期:2021-05-12
资源大小:1k
文件大小:2k
- 在BUF数据区中放有三个双字节数,现要求将这三个数按从大到小次序重新存放。分别将这些数视为有符号数和无符号数这两种情况编写程序。上机调试程序,检查执行结果。
- ;Filename:yun1.asm
- .486
- data segment use16
- buf dw 2233h,1122h,4455h ;假设的三个无符号数
- data ends
- code segment use16
- assume cs:code,ds:data
- start: mov ax,data
- mov ds,ax
- mov ax, buf
- mov bx,buf+2
- mov cx,buf+4
- cmp ax,bx ;第一个数与第二个数比较
- jnc next1 ;若第一个数大于或等于第二个数,则转到next1比较第一和第三个数
- xchg ax,bx ;若第一个数小于第二个数,则交换
- next1:
- cmp ax,cx ;第一个数与第三个数比较
- jnc next2 ;若第一个数大于或等于第三个数,则转到next2比较第二个和第三个数
-
- xchg ax,cx ;若小于,则交换
- next2:
- cmp bx,cx ;第二个数与第三个数比较
- jnc next3
- xchg bx,cx
- next3:
- mov buf+4,cx
- mov buf+2,bx
- mov buf,ax
- mov ah,4ch
- int 21h ;返回DOS
- code ends
- end start ;汇编结束
- 无符号数
- ;Filename:yun1.asm
- .486
- data segment use16
- buf dw 2233h,1122h,4455h ;假设的三个有符号数
- data ends
- code segment use16
- assume cs:code,ds:data
- start: mov ax,data
- mov ds,ax
- mov si,offset buf
- mov ax,[si]
- cmp ax,[si+2] ;第一个数与第二个数比较
- jnc next1 ;若第一个数大于或等于第二个数,则转到next1比较第一和第三个数
- xchg ax,[si+2] ;若第一个数小于第二个数,则交换
- mov [si],ax
- next1: mov ax,[si]
- cmp ax,[si+4] ;第一个数与第三个数比较
- jnc next2 ;若第一个数大于或等于第三个数,则转到next2比较第二个和第三个数
- xchg ax,[si+4] ;若小于,则交换
- mov [si],ax
- next2: mov ax,[si+2]
- cmp ax,[si+4] ;第二个数与第三个数比较
- jnc next3
- xchg ax,[si+4]
- mov [si+2],ax
- next3: mov ah,4ch
- int 21h ;返回DOS
- code ends
- end start ;汇编结束