求高手编写一个汇编语言的小程序

要求:试编写完整汇编程序,分类统计字数组data1中正负数和零的个数,分别存入内存变量positive,negative,zero中,数组元素个数保存在第一个字当中。设数... 要求:试编写完整汇编程序,分类统计字数组data1中正负数和零的个数,分别存入内存变量positive,negative,zero中,数组元素个数保存在第一个字当中。设数据段按照如下给出的定义,试完成该程序,
DATA1 SEGMENT
Data1 DW 10
DW 2310,-43,31,-321,-1234,45,0,3213,0,5477
Positive DW 0
Negative DW 0
Zero DW 0
DATA1 ENDS
展开
 我来答
hurry749
2013-04-12 · TA获得超过4188个赞
知道大有可为答主
回答量:1.1万
采纳率:22%
帮助的人:2022万
展开全部
我给你三个数字输入,从小到大输出:
编译:

INKEY宏NN

MOV啊,1H

中断21h

子人,30H

MOV BL,NN

MUL BL

新增总和,斧头

ENDM

数据段

总和DW 0 /> str1的DW 0

str2的DW 0

STR3 DW 0

BUFF1 DB 0

BU2 DB“1 2 3 4 5 6 7 8 9 A”,0DH,0AH“ “

数据结束

堆栈段段堆栈

DB 100 DUP(?)

堆栈结束

代码段

假设CS,DS代码: ES:数据,数据,SS:堆栈

SUB1 PROC远远开始推DS

MOV AX,0

的PUSH AX

MOV AX,数据答余锋

MOV DS,斧头

MOV ES,斧头

INKEY 100,输入的第一个号码

INKEY 10

INKEY

MOV AX,总和
> MOV str1的斧头

MOV总和,0

MOV DL,“

MOV啊,2H

中断21h

INKEY 100进入第一两个数字

INKEY 10
INKEY 1,总和

MOV str2的AX

MOV总和,0

MOV DL“,”乐章啊,2H

中断21h

INKEY 100;输入数量

INKEY 10

INKEY 1

MOV AX,总和
> MOV STR3,斧头

MOV DL,0DH

乐章啊,2H

21H

MOV DL,0AH

乐章啊,2H
> INT 21H

MOV AX,str1的三个数字大小

CMP斧头,STR2

JAE A7。的

JMP A8

A7:MOV BX,STR2

MOV STR2,斧头

MOV str1中,BX

A8:清晌MOV AX,STR2

CMP斧头,STR3

宰A9

JMP A11

A9:MOV BX,毁档STR3

MOV STR3,斧头

MOV STR2,BX

MOV AX,str1的

CMP斧头,STR2

宰A10

JMP A11

A10:MOV BX,BX,STR2

MOV STR2,斧头

MOV str1的

A11:MOV AX,STR1

MOV AL,啊

调用SUB3

MOV AX,STR1

调用SUB3

MOV DL,“H” />乐章啊,2H

中断21h

MOV DL,“

MOV啊,2H

INT 21H

XOR啊,啊

MOV AX,STR2

MOV AL,啊

呼叫SUB3

MOV AX,STR2

调用SUB3

MOV DL,“H”
>乐章啊,2H

21H

MOV DL,“”

MOV啊,2H

21H

异啊,啊

MOV AX,STR3

MOV AL,啊

调用SUB3

MOV AX,STR3

通话SUB3

MOV DL,“H”

MOV啊,2H 21H

RET

SUB1 ENDP

SUB2 PROC

CMP AL,9

JA G1

添加人,“0”;

JMP G2

G1:加AL,37H

G2:MOV DL,人

乐章啊,2

21H

RET

SUB2 ENDP

SUB3 PROC

MOV BUFF1人

SHR人,1

SHR人,1

SHR人,1 BR /> SHR人,1

CALL SUB2

MOV AL,BUFF1

人,0FH

CALL SUB2

RET SUB3 ENDP 代码结束

年底开始

(C语言):

#包括中

无效的main()

{

吨;

INT A,B,C;

的printf(“请输入三个整数:\ N”);

scanf函数(“%D%D%D” ,&B,&C);

倘(a> B)

{

T = A;

= B;

B =吨; BR />} / / A,B交换

(> C)

{

T = A;

= C;

C =吨; BR />} / / A,C交换

(B> C)

{

T = B;

B = C;

C =吨; BR />} / / B,C交换

的printf(“从小到大输出数:%d,%D,%D \ N”,A,B,C);
}
校力学Q2
2012-12-26 · TA获得超过3985个赞
知道大有可为答主
回答量:1.5万
采纳率:0%
帮助的人:4449万
展开全部
汇编器,输入十进位输出(十六进制)
代磨拦毕码段
是真正承担CS,DS代码:代码
ORG 100H
启动:
推CS BR /> POP DS
再次:LEA DX,TIPS1
MOV AH,9
INT 21H;显示提示
异BP,BP,BP清
到mov cx, 5
:MOV AH,0
诠释16H;回声输入
CMP AL 1BH; Esc退出程序
JZ退出
CMP AL,0DH BR /> JZ显示,输入端输入
CMP AL,'0'
JB _at_
CMP AL,'9';数据验证
JA _at_
MOV AH,0EH
INT 10H;进入
人,0FH
SHL BP
MOV BX,BP
SHL 1
SHL BP BP,
添加BP,BX
MOV AH,0
加载BP,AX; BP * 10 + AX???
环@

显示: LEA DX,TIPS2
MOV AH,9
INT 21H;显示结果
MOV CX,
垂耳:推CX
MOV CL,4
> ROL BP,CL
MOV AX,BP
人,0FH
或人,30H
CMP AL,'9'
JBE Q1
附加人,7
Q1:MOV AH,0EH
INT 10H;为十六进制瞎芹显示
弹出CX
环垂耳
MOV AL,'H'
> INT 10H
JMP再衡核次
退出:
MOV AH,0EH
MOV AL,'O'
INT 10H
MOV AL,'K' BR /> INT 10H
MOV AH,0
诠释16小时
MOV AH,4CH
INT 21H的
TIPS1 DB 0DH,0AH,09“,输入(0 - 65535D),按Esc键退出:$'
TIPS2 DB 0DH,0AH,09,“十六进制:$'
代码
年底开始结束
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pardream941026
2012-12-21 · TA获得超过8216个赞
知道大有可为答主
回答量:4602
采纳率:89%
帮助的人:1327万
展开全部
dseg segment
data1 dw 10, ......; //首项为数据项个数
positive dw 0
negative dw 0
zero dw 0
dseg ends

cseg segment
main proc far
assume cs:cseg, ds:dseg

start:
push ds
xor ax,ax
push ax

mov ax, dseg
mov ds, ax

mov bx, 0
mov si, bx ;=0
mov di, bx ;>0

mov cx, data1[bx] ;//数组则咐个数放入拦盯答cx
add bx, 2 //数据第简慧一个项

again:
cmp data1[bx], 0
jle less_or_eq
inc di
jmp next

less_or_eq:
jl next
inc si; =0
next:
add bx, 2
dec cx
jnz again

;---end cycle
mov ax, data1[0]
sub ax, di
sub ax, si

mov negative, ax
mov positive, di
mov zero, si
ret
main endp
cseg ends
end start
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式