现在的位置: 首页 > 综合 > 正文

矩阵的转置2

2018年05月03日 ⁄ 综合 ⁄ 共 923字 ⁄ 字号 评论关闭

王爽汇编语言第二版学习笔记

 

 


 

一、题目要求

在一个段中定义一个16*16(256个字节)的矩阵,并从00-FF填充数据。编程程序,实现该矩阵的转置,不允许使用其它的任何内存空间(包括栈)

 

 


 

二、实现代码

assume cs:codesg,ds:datasg

 

datasg segment

        db 256 dup (0)

datasg ends

codesg segment

start:
        mov ax,datasg

        mov ds,ax

        mov bx,0

        mov al,0

        mov cx,256

     s0:                             ;填充矩阵
        mov [bx],al

        inc al

        inc bx

        loop s0

 

        mov bx,1                 ;使用bx控制横向列偏移地址

        mov bp,10h             ;使用bp控制纵向行偏移地址

        mov cx,15

      s:
        mov dx,cx               ;保存cx,准备进入内层循环

        mov si,0                 ;用si控制横向的行偏移地址

        mov di,0                 ;用di控制纵向的列偏移地址

        mov cx,bx               ;在第一行有1个数需要交换,第二行有2个数需要交换。。。

     s1:
        mov al,[bx+si]           ;读取数据并交换位置

        mov ah,ds:[bp+di]

        mov [bx+si],ah

        mov ds:[bp+di],al

        inc di

        add si,10h

        loop s1

        inc bx

        add bp,10h

        mov cx,dx

        loop s

        mov ax,4c00h

        int 21h

codesg ends

end start

 


 

三、运行结果

抱歉!评论已关闭.