求高手编写一个汇编语言的小程序
要求:试编写完整汇编程序,分类统计字数组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 展开
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 展开
3个回答
展开全部
我给你三个数字输入,从小到大输出:
编译:
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);
}
编译:
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);
}
展开全部
汇编器,输入十进位输出(十六进制)
代磨拦毕码段
是真正承担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,“十六进制:$'
代码
年底开始结束
代磨拦毕码段
是真正承担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,“十六进制:$'
代码
年底开始结束
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询