矩阵的转置2

来源:互联网 发布:excel数据删除重复项 编辑:程序博客网 时间:2024/05/23 15:39

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

 

 


 

一、题目要求

在一个段中定义一个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

 


 

三、运行结果