初学汇编,简单实现了一下键盘输入行和列,然后屏幕显示对应元素的功能。
一.思路
了解到汇编中其实没有二维数组的概念,需要用一维数组进行模拟,接着就是傻傻地写了,毫无技术含量。
二.注意点
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
四.运行结果
原文地址:https://www.cnblogs.com/Advancingxq/p/9813344.html
时间: 2024-10-29 07:38:04