本帖最后由 57158597@qq.com 于 2018-6-17 17:49 编辑
mov al,a[bx][si]这行代码是错误的,什么意思都不代表
二维数组是可以用汇编表示的,就看你怎么理解和应用了
如下:
assume cs:codesg
data segment
sz db 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16 ;数组sz的全部内容
db 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32
db 33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48
db 49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64
data ends
codesg segment
start: mov ds,offset sz ;把数组所在的段地址放入DS
mov bx,0*16 ;bx=0*16表示1行,1*16第2行,2*16第3行(这个0*16的表达是不对的,我这样写是方便看)
mov si,0 ;s=0标识第1列,si=1标识第2列以此类推
mov ax,[bx][si] ;这里的ax=1,1行1列的位置是1(也可以这么写mov ax,[bx+si] )
mov bx,2*16
mov si,5
mov ax,[bx][si] ;这里的ax=38,3行6列的位置
mov ax,4c00h
int 21h
codesg ends
end start