南邮汇编第一次实验
2016-10-17 12:39
726 查看
题目描述:从数据段单元开始有9个有符号数,找出最小值存放到数据段min单元,并将负数的个数显示在屏幕上.
说明:第一行是小于0的个数,第二行是最小值
DATAS SEGMENT array DB -4,-3,-2,-1,0,1,2,3,4;数据段 LEA si,array sum DB ? min DB ? DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX mov sum,0 mov CX,9 again: mov al,[si] cmp al,0 ;因为是db所以是字节类型,所以放在al中表示字节类型(一个字节)此部分也可以写成cmp BYTE PTR[si],0 JGE next inc sum;当小于0则累加记录小于0的个数sum next:inc si;不管怎样都要访问下一个单元的值(同样因为这里是DB所以是字节,所以只用往后+1) loop again mov AH,2;得到小于的个数但是需要转成字符+30H mov DL,sum add DL,30H INT 21H mov AH,2;这三行是换行,接下去是打印最小值 mov DL,0AH int 21H lea si,array;si重新指向数据段首部 mov cx,9 mov al,[si] mov min,al;min初始化为数据段第一个值但是注意源,目标操作数不能同时为内存操作数,所以需要通过寄存器转换) inc al;从第二个开始找比min小的数 again2: mov al,[si] cmp min,al;同样比较数据段中每一个值和min的大小 JL next2 mov al,[si] mov min,al next2: inc si loop again2 cmp min,0;接下去是打印min,当min为非负数直接打印,否则应当先输出负号,再输出它的相反数 JGE next3 mov AH, 02H;打印负号 mov DL, 2DH int 21H mov BL,0;用0减去这个数得到相反数 sub bl,min mov min,bl next3: mov AH,2 mov DL,min add DL,30H;转成字符类型 int 21H MOV AH,4CH INT 21H CODES ENDS END START
说明:第一行是小于0的个数,第二行是最小值
相关文章推荐
- 南邮汇编第二次实验
- 南邮《算法设计与分析》第一次实验源码
- 南邮汇编实验——汇编语言实现用户的登录,不回显密码
- 南邮汇编实验一
- 南邮汇编实验二(用户登录)
- 20145231 《Java程序设计》第一次实验
- java第一次实验
- 20144303 《Java程序设计》第一次实验实验报告
- 王爽 汇编 实验13:编写、应用中断进程
- 《Java程序设计》第一次实验实验报告
- 南邮JAVA程序设计实验1 综合图形界面程序设计
- C++第一次实验:项目二分段函数求值
- c++第一次实验-4模拟ATM
- 信息安全系统设计基础第一次实验报告
- 第一次实验拓展
- 汇编输入字符串常见的实验题
- C++第一次实验项目2、6(二)
- 第一次实验:八皇后及N皇后问题
- 第一次实验,八皇后问题
- 王爽汇编第二版实验5