汇编语言程序设计题求高手

来源:百度知道 编辑:UC知道 时间:2024/05/21 04:52:43
1.编写一个程序实现:在BUF开始的存储区中存放30个带符号数,试统计其正数、负数和零的个数,并将统计的个数分别放到PLUS、NEGATIVE、ZERO单元中。
2.若内存BUF开始的单元中存放10个无序的有符号数,试用冒泡法将它们升序排列。
要求:实验前要做好充分准备,包括程序框图,源程序清单,调试步骤,调试方法,以及对程序结果的分析等。

1.编写一个程序实现:在BUF开始的存储区中存放30个带符号数,试统计其正数、负数和零的个数,并将统计的个数分别放到PLUS、NEGATIVE、ZERO单元中。

; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
BUF db 23,-69,0,35,46,0,57,68,0,79,81,98,-43,251,21,15,-69,0,58,159,-27,-89,65,76,85,123,0,253,193,121
Elements equ ($-BUF)/Type BUF ;元素个数
Plus db 0 ;正数计数
Negative db 0 ;负数计数
Zero db 0 ;零计数
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
cld
lea si,BUF ;取数据地址
mov cx,Elements ;元素个数
Statics: cmp byte ptr [si],0 ;是否0?
jnz $+8 ;不是
inc Zero ;是,0计数
jmp Next_One
test byte ptr [si],80h ;是否正数?
jnz $+8 ;不是
inc Plus ;是,正数计数
jmp $+6
inc Negative ;负数计数
Next_One:inc si ;si增1,判断下一个元素
loop Statics
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束

2.若内存BUF开始的单元中存放10个无序的有符号数,试用冒泡法将它们升序排列。
; 冒泡法排序
Code Segment
Assume CS:Code,DS:Code
; -