汇编语言关于数组的问题 50

大概就是两个数组一个master初始为20个0一个array1为9位17,1,19,11,7,16,18,2,4然后从array1的第一个数字开始遇到小于10的数字比如7... 大概就是 两个数组 一个master 初始为 20个 0
一个array1 为9位 17,1,19,11,7,16,18,2,4
然后从array1的第一个数字开始 遇到小于10 的数字 比如7,就到master里把 第7个0 改成 1
然后输出 master 然后把 master 里 为1 的元素的 偏移地址打印出来
然后在把 master 的第1,3,5,7,9,11,13,15,17,19 位 抽出来做成一个新的word
再把这个word打出来

才接触汇编 不怎么会 写了一点写不下去了
data_area segment
master db 20 dup ('0'),"$"
array1 db 17,1,19,11,7,16,18,2,4
data_area ends

code segment
assume cs:code,ds:data_area
start:
mov ax, data_area
mov ds, ax
lea si, array1
lea di, master
mov cx, 0009H
mov ax, 1H
comp: cmp [si], 0aH
ja next
add di, [si]
mov [di], ax
inc si
next: inc si
loop comp

lea dx, master
mov ah,09H
int 21h

exit1: mov ah,4ch
int 21h

code ends
end start

我写得这个[si] [di]不是array1 和master里的元素 很疑惑
一点帮助也好 谢了
展开
 我来答
做而论道
高能答主

2012-02-23 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
两个数组
一个master 初始为 20个 0
一个array1 为9位 17,1,19,11,7,16,18,2,4

然后从array1的第一个数字开始 遇到小于10 的数字 比如7,就到master里把 第7个0 改成 1

然后输出 master

data_area segment
master db 20 dup ('0'), '$'
array1 db 17,1,19,11,7,16,18,2,4 ;各个元素:0~19
data_area ends

code segment
assume cs:code,ds:data_area
start:
mov ax, data_area
mov ds, ax
lea si, array1
lea di, master
mov cx, 0009H
comp:
cmp BYTE PTR [si], 0aH ;字节比较.
ja next
MOV BL, [SI] ;取来该字节.
MOV BH, 0
INC BYTE PTR [DI + BX] ;对应的单元 '0' --> '1'
next:
inc si
loop comp
;-------------------------------
lea dx, master
mov ah,09H
int 21h

exit1:
mov ah,4ch
int 21h

code ends
end start
;==============
程序执行结果:
C:\MASM>QW
01101001000000000000
C:\MASM>

对应于 array1 中的数字,小于10的有:1、2、4、7。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式