请教高手两个汇编问题。急

来源:百度知道 编辑:UC知道 时间:2024/05/17 03:29:11
1.已知在以ARRAY为首地址的数据区中存放10个带符号字数据:
ARRAY DW,1,2,-1,3,4,-2,-3,4,5,-6
编程将ARRAY分成两个数组:正数数组P_ARY和负数数组N_ARY,并分别显示正数项个数和负数项个数。
要求:源程序格式完整。
2.程序接收用户键入一个关键字和一个句子。如果句子中不包含关键字则显示No match;如果包含则显示该字在句子中的位置,用十六进制数显示。
谢谢啦。

把数挨个放入数组,指针移动,数字挨个与0比较,比0大先放入一个数组里,再放入一个寄存器(累加)中,比0小先放入一个数组里,再放入一个寄存器(累加)中..

第二个问题也是把数字拿出来挨个比较,不过关键字和句子要先放入数据段里.

这两个程序都需要有个数据段

做下第一个吧
assume cs:code,ds:data,ss:stack

stack segment
db 32 dup (0)
stack ends

data segment
ARRAW dw 1,2,-1,3,4,-2,-3,4,5,-6
P_ARY dw 10 dup (0)
N_ARY dw 10 dup (0)
data ends

code segment
start:
mov ax,data
mov ds,ax
mov cx,0ah
mov si,0

@@: cmp ARRAW[si],0
jg p

mov ax,ARRAW[si]
mov P_ARY[si],ax
inc bx
jmp next

p: mov ax,ARRAW[si]
mov N_ARY[si],ax
inc dx

next: add si,2
loop @b

mov ax,4c00h
int 21h

code ends
end start

第一个数组中的元素个数保存在了bx中
第二个数组中的元素个数保存在了dx中

这道题我做过
data segment
array dw 1,2,-1,3,4,-2,-3,4,5,-6
P_ARY dw 10 dup(