汇编输入行与列实现对二维数组的查询

Posted advancingxq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编输入行与列实现对二维数组的查询相关的知识,希望对你有一定的参考价值。

初学汇编,简单实现了一下键盘输入行和列,然后屏幕显示对应元素的功能。
一.思路
了解到汇编中其实没有二维数组的概念,需要用一维数组进行模拟,接着就是傻傻地写了,毫无技术含量。
二.注意点
DOS功能调用不管是键盘输入,还是屏幕输出都是以字符形式,要变成10进制要减去对应的ASCLL码,比如0的ASCLL码就是48,代码有体现到。
三.代码

dseg segment
    str db '1','2','3','4','5','5','4','3','2','1'
    str1 db 'please input the row:',0dh,0ah,'$'
    str2 db 'please input the column:',0dh,0ah,'$'
    str3 db 'too big!',0dh,0ah,'$'
    row db 2
    col db 5
    row1 db 0
    col1 db 0
dseg ends
cseg segment
    assume  cs:cseg,ds:dseg
start:  
    mov ax,dseg
    mov ds,ax
    lea bx,str
    xor ax,ax
    ;
    lea dx,str1
    mov ah,09h
    int 21h
    mov ah,01h
    int 21h
    sub al,48
    mov row1,al
    mov ah,02h
    mov dl,0dh
    int 21h      ;out huiche
    mov ah,02h
    mov dl,0ah
    int 21h      ;out huanhang
    ;
    lea dx,str2
    mov ah,09h
    int 21h
    mov ah,01h
    int 21h
    sub al,48
    mov col1,al
    mov ah,02h
    mov dl,0dh
    int 21h      ;out huiche
    mov ah,02h
    mov dl,0ah
    int 21h      ;out huanhang
    ;
    mov al,row
    cmp al,row1
    jl gg
    mov al,col
    cmp al,col1
    jl gg
    mov ax,0
    sub row1,1
    sub col1,1
    mov al,row1                 ;row1*col+col1                                                                              
    mov cl,col
    mul cl
    add al,col1
    jmp ll
gg: 
    lea dx,str3
    mov ah,09h
    int 21h
    mov ah,4ch
    int 21h
ll:
    lea bx,str
    add bx,ax
    mov dl,[bx]
    mov ah,02h 
    int 21h
    mov ah,4ch
    int 21h
cseg ends
    end start

四.运行结果
技术分享图片

以上是关于汇编输入行与列实现对二维数组的查询的主要内容,如果未能解决你的问题,请参考以下文章

5.2 Javascript:循环-二维数组

c++输入一个5行5列的二维数组,求最大值和最小值其对应行列的位置。。

将0所在行列清零

sql 语句系列(行与列处理)[八百章之第一章]

java数组

获取多维数组的维度