汇编语言程序设计,从键盘输入一个5*5矩阵

从键盘输入一个4*4的矩阵。

要求:
(1)每个元素都是4位十进制数。
(2)在屏幕上输出该矩阵和它的转置矩阵。
(3)输出这两个矩阵的和(对应元素相加)。
(4)数据的输入和结果的输出都要有必要的提示,且提示独占一行。
(5)要使用到子程序。

代码段

data segment        ;数据段
    str dw 10 dup(?)
    str1 db 'Please input your matrix:',0ah,0dh,'$'
    str2 db 'Your matrix is:',0ah,0dh,'$'
    str3 db 'Your transpose matrix is:',0ah,0dh,'$'
    str4 db 'The sum of matrices is:',0ah,0dh,'$'
    crlf db 0ah,0dh,'$'
    m1 dw 16 dup(?)  ;原始矩阵
    m2 dw 16 dup(?)  ;转置矩阵
    m3 dw 16 dup(?)  ;矩阵之和
    x dw ?   ;判断是否满足四位数
data ends

stack segment stack  ;堆栈段
   dw 20 dup(?)
stack ends

code segment          ;代码段
  assume cs:code,ds:data,ss:stack
  main proc far
start:
  mov ax,data
  mov ds,ax

  mov ah,09h
  lea dx,str1
  int 21h

  call input_data

  mov ah,09h
  lea dx,crlf
  int 21h

  mov ah,09h
  lea dx,str2
  int 21h

  call output_data1

  call exchange
  mov ah,09h
  lea dx,str3
  int 21h
  
  call output_data2

  mov ah,09h
  lea dx,crlf
  int 21h
  
  mov ah,09h
  lea dx,str4
  int 21h
  call sum_data
  call output_data3

  mov ax,4c00h
  int 21h
  main endp

input_data proc near  ;从键盘输入一个4*4矩阵
     mov di,0
     mov si,0
     mov bx,0

L1:  
     mov ax,0
     mov cx,0
     mov dx,0
  
     mov ah,01h
     int 21h    ;输入一个四位元素中的一位,转化为数值
     inc di
     
     sub al,30h   ;转化为数值,存入ax中
     cbw
     xchg ax,bx
     mov cx,10
     mul cx
     add bx,ax

     mov cx,4  ;判断是否是四位数,是则存入
     cmp di,cx
     je L2 

     jmp L1
L2:
     mov m1[si],bx
     mov bx,0
     mov ax,0
     inc si
     inc si  
     mov ah,02h
     mov dl,' '
     int 21h
     mov cx,0
     mov cx,x
     inc cx
     mov x,cx
     mov di,0

     mov dx,x
     mov cx,4
     cmp dx,cx
     je L3
     mov dx,x
     mov cx,8
     cmp dx,cx
     je L3
     mov dx,x
     mov cx,12
     cmp dx,cx
     je L3

     mov cx,16
     cmp dx,cx
     je L4

     jmp L1
L3: 
     lea dx,crlf;换行
     mov ah,09h
     int 21h
     jmp L1
L4: 
     lea dx,crlf;换行
     mov ah,09h
     int 21h
       ret
input_data endp
;*********************************************
output_data1 proc near  ;输出原矩阵
      mov si,0
      
  O3: 
      mov bx,0
      mov ax,0
      mov cx,0
      mov ax,m1[si]
  O1:
      mov dx,0
      mov di,10
      div di
      push dx
      inc cx
      cmp ax,0
      jnz O1
  O2:
      pop dx
      add dx,30h         
      mov ah,02h
      int 21h
      loop O2

      mov ah,02h
      mov dl,' '
      int 21h
      add si,2
      cmp si,8
      je O4
      cmp si,16
      je O4
      cmp si,24
      je O4
      cmp si,32
      je O5
      
      jmp O3
   O4:
       mov ah,09h
       lea dx,crlf
       int 21h
       jmp O3
   O5:
       mov ah,09h
       lea dx,crlf
       int 21h
      ret
output_data1 endp
;****************************************
exchange proc near;进行矩阵的转置,从而得到转置矩阵
    mov si,0
    mov di,0
    mov cx,0
    mov dx,0
    mov ax,0
 
 E2:
    mov ax,m1[si]
    mov m2[di],ax
    add si,8
    inc di
    inc di
    inc dx
    inc dx
    cmp dx,8
    je E1
    jmp E2
 E1:
    mov dx,0
    inc cx
    inc cx
    mov si,cx
    cmp cx,8
    je E3
    jmp E2
 E3:
    mov ah,09h
    lea dx,crlf
    int 21h
    ret
exchange endp
;*******************************************************
output_data2 proc near  ;输出转置矩阵
      mov si,0
      
  T3: 
      mov bx,0
      mov ax,0
      mov cx,0
      mov ax,m2[si]
  T1:
      mov dx,0
      mov di,10
      div di
      push dx
      inc cx
      cmp ax,0
      jnz T1
  T2:
      pop dx
      add dx,30h         
      mov ah,02h
      int 21h
      loop T2

      mov ah,02h
      mov dl,' '
      int 21h
      add si,2
      cmp si,8
      je T4
      cmp si,16
      je T4
      cmp si,24
      je T4
      cmp si,32
      je T5
      
      jmp T3
   T4:
       mov ah,09h
       lea dx,crlf
       int 21h
       jmp T3
   T5:
       mov ah,09h
       lea dx,crlf
       int 21h
      ret
output_data2 endp
;*********************************************************
sum_data proc near;计算矩阵的和,结果转移到m3中
    
       mov ax,0
       mov si,0
    S1:
       mov ax,m1[si]
       add ax,m2[si]
       mov m3[si],ax
       add si,2
       cmp si,32
       je S2
       jmp S1
    S2:
       ret
sum_data endp
;*********************************************************
output_data3 proc near  ;输出两矩阵之和
      mov si,0
      
  F3: 
      mov bx,0
      mov ax,0
      mov cx,0
      mov ax,m3[si]
  F1:
      mov dx,0
      mov di,10
      div di
      push dx
      inc cx
      cmp ax,0
      jnz F1
  F2:
      pop dx
      add dx,30h         
      mov ah,02h
      int 21h
      loop F2

      mov ah,02h
      mov dl,' '
      int 21h
      add si,2
      cmp si,8
      je F4
      cmp si,16
      je F4
      cmp si,24
      je F4
      cmp si,32
      je F5
      
      jmp F3
   F4:
       mov ah,09h
       lea dx,crlf
       int 21h
       jmp F3
   F5:
       mov ah,09h
       lea dx,crlf
       int 21h
      ret
output_data3 endp
code ends
end start
  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
使用 JavaScript 编写的记忆游戏(附源代码)   项目:JavaScript 记忆游戏(附源代码) 记忆检查游戏是一个使用 HTML5、CSS 和 JavaScript 开发的简单项目。这个游戏是关于测试你的短期 记忆技能。玩这个游戏 时,一系列图像会出现在一个盒子形状的区域中 。玩家必须找到两个相同的图像并单击它们以使它们消失。 如何运行游戏? 记忆游戏项目仅包含 HTML、CSS 和 JavaScript。谈到此游戏的功能,用户必须单击两个相同的图像才能使它们消失。 点击卡片或按下键盘键,通过 2 乘 2 旋转来重建鸟儿对,并发现隐藏在下面的图像! 如果翻开的牌面相同(一对),您就赢了,并且该对牌将从游戏中消失! 否则,卡片会自动翻面朝下,您需要重新尝试! 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox, 以获得更好、更优化的游戏体验。要玩游戏,首先,通过单击 memorygame-index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值