在数据段有一个字节数组,编程统计其中的正数的个数放入W单元,统计负数放入R单元。
第三题:
正数放在PLUS_BUF单元中,负数放在MINUS_BUF单元中
DATA SEGMENT
BLOCK DB 0BH,4BH,0F4H,0AFH,0AH,90H,87H,50H,0F4H,0F3H,21H
DB 99H,0FFH,40H,77H,88H,0B3H,9EH,06H,08H,02H,3AH,91H
CNT EQU $-BLOCK
PLUS_BUF DB CNT DUP(0)
MINUS_BUF DB CNT DUP(0)
STO1 DB 1 DUP(0)
STO2 DB 2 DUP(0)
STO3 DB 'The positive numbers are: $'
STO4 DB 'The negatives are: $'
STO5 DB 'The number of positive number is: $'
STO6 DB 'The number of negative is: $'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV BX,0
MOV DX,0
LEA SI,BLOCK
LEA DI,PLUS_BUF
LEA BP,MINUS_BUF
MOV CX,CNT
CLD
NEXT:LODSB
TEST AL,80H
JNZ MINUS
STOSB
INC BL
JMP AGAIN
MINUS:XCHG BP,DI
STOSB
INC DL
XCHG BP,DI
AGAIN:LOOP NEXT
MOV STO1,DL
LEA DX,STO5
MOV AH,09H
INT 21H
MOV AX,0
ADD AL,BL
DAA
MOV BL,AL
MOV CL,4H
SHR AL,CL
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
AND BL,0FH
ADD BL,30H
MOV DL,BL
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,2H
INT 21H
MOV DL,0AH
MOV AH,2H
INT 21H
LEA DX,STO6
MOV AH,09H
INT 21H
MOV DL,STO1
MOV AX,0
ADD AL,DL
DAA
MOV BL,AL
MOV CL,4H
SHR AL,CL
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
AND BL,0FH
ADD BL,30H
MOV DL,BL
MOV AH,02H
INT 21H
MOV DL,0DH
MOV AH,2H
INT 21H
MOV DL,0AH
MOV AH,2H
INT 21H
MOV DL,0DH
MOV AH,2H
INT 21H
MOV DL,0AH
MOV AH,2H
INT 21H
LEA DX,STO3
MOV AH,9H
INT 21H
LEA DI,PLUS_BUF
L1:MOV AL,[DI]
CMP AL,0
JZ EXIT1
MOV STO1,AL
MOV CL,4H
SHR AL,CL
CMP AL,9H
JA NUM1
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
JMP N1
NUM1:ADD AL,37H
MOV DL,AL
MOV AH,02H
INT 21H
N1:AND STO1,0FH
CMP STO1,9
JA NUM2
ADD STO1,30H
MOV DL,STO1
MOV AH,02H
INT 21H
JMP N2
NUM2:ADD STO1,37H
MOV DL,STO1
MOV AH,2H
INT 21H
N2:INC DI
MOV DL,' '
MOV AH,2H
INT 21H
JMP L1
EXIT1:
MOV DL,0DH
MOV AH,2H
INT 21H
MOV DL,0AH
MOV AH,2H
INT 21H
LEA DX,STO4
MOV AH,9H
INT 21H
LEA BP,MINUS_BUF
L2:MOV AL,[BP]
CMP AL,0
JZ EXIT2
MOV STO2,AL
MOV CL,4H
SHR AL,CL
CMP AL,9H
JA NUM3
ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
JMP N3
NUM3:ADD AL,37H
MOV DL,AL
MOV AH,02H
INT 21H
N3:AND STO2,0FH
CMP STO2,9
JA NUM4
ADD STO2,30H
MOV DL,STO2
MOV AH,02H
INT 21H
JMP N4
NUM4:ADD STO2,37H
MOV DL,STO2
MOV AH,2H
INT 21H
N4:INC BP
MOV DL,' '
MOV AH,2H
INT 21H
JMP L2
EXIT2:MOV AH,4CH
INT 21H
CODE ENDS
END START
我编了一个程序,判断没有问题,但是有一个缺点,就是显示的时候,A,B中的值不能超过9,因为我调用的是doc的2号功能,转换也就是一个减法。没有加是两位或者更高位的判断,我想这不是重点!!
NUMBER EQU 8
DSEG SEGMENT
A DB 0
B DB 0
ARR DB 12,-5,78,-6,78,-9,-89,-78
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG
MOV DS,AX
MOV CL,NUMBER
MOV DI,0
XOR AH,AH
XOR BH,BH
LOOP1: MOV AL,[ARR+DI]
TEST AL,10000000B ;看高位是否为1,做为正负的标志
JE POSITIVE ;为正转移
ADD B,1
JMP NEXT
POSITIVE:ADD A,1
NEXT: INC DI
LOOP LOOP1 ;循环判断
ADD A,48 ;显示A,B
MOV DL,A
MOV AH,2
INT 21H
MOV DL,32
MOV AH,2
INT 21H
ADD B,48
MOV DL,B
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CSEG ENDS
END START
segment data
Array DB dup(100) ; dup语法可能不对
Array_end DB 0
W DB 0
R DB 0
segment code
mov ax,OFFSET Array_end; OFFSET 取地址偏移值
sub ax, OFFSET Array
mov cx, ax; 得到数组长度
mov si, OFFSET Array; 数组起始指针
check:
lodsw ;读入数组数据到AX,用到SI
jg POS
mov ax, [OFFSET W]
INC ax
mov [OFFSET W], ax
inc SI
loop check; 循环,自动将CX减1
jmp END
POS:
mov ax, [OFFSET R]
INC ax
mov [OFFSET R], ax
inc SI
loop check ; 循环,自动将CX减1
END:
NOP
请问在python里 L=[1,2,3,4,5,...] 数组截取怎么按照每三个元素...
用到了序列和切片L = [x for x in range(1,100)] # 原数据 1-99 数组print (L)L2 = L[::3] #L2 为每三个的序列print (L2)L3 = []for i in L2: # 从L中3个3个的数 L3.append(L[i-1:i+2]) #切片是从0计数 所以从i-1 开始 print L3 ...
用C语言编程一个考试成绩统计,可以计算某个分数段有多少人 请问具体怎 ...
如果单纯为了统计各个分数段的数量,只需要一个循环判断即可,从记录成绩的数组中依次取出数据,判断落在哪个分数段落,然后对该段落的变量进行累加1,最后只需要看看各个段落的变量是多少便可知道。
如何在c++定义一个学生类以实现平均成绩的计算和查询功能?
举例说,如果要做一个自动泊车系统,它有各个模块或业务逻辑独立的不同软件,在进行通信、数据交互,或者...此外,由于SOC+MCU组合的现象会长期存在,因而,在今后相当长一段时间内,AUTOSAR AP都不可能彻底取代...8.一棵二叉树如右图所示,若采用顺序存储结构,即用一维数组元素存储该二叉树中的结点(根结点的下标为...
java取数组中的最大值
在实际应用中,这种方法可以用于处理各种数据处理任务,如统计分析、数据清洗等。通过不断迭代和比较,我们可以高效地找到目标数组中的最大值,进而为后续的数据处理提供支持。需要注意的是,这里的实现是基于一个基本的数组遍历和比较操作。在实际编程中,我们还可以进一步优化这个算法,例如采用二分查找等更...
c++定义学生类实现平均成绩计算和查询功能?
答案:D试题分析:逻辑与,当且仅当2个数对应位都为1的,答案才为1,详情见普及组课程63课时。...试题分析:1Byte(字节) = 8 bit(位) 32\/8=4 详情见普及组课程103课时。4.若有如下程序段,其中...的下标为1,若某结点的下标为i,则其左孩子位于下标2i处、右孩子位于下标2i+1处),则该数组的最大...
定义一个数组a[5],给数组录入数据scanf,录入后找到数组中最大的值...
\/\/ 读入数据 printf("请输入5个整数:\\n");for (i = 0; i < 5; i++) { scanf("%d", &a[i]);} \/\/ 找到最大值 max = a[0];for (i = 1; i < 5; i++) { if (a[i] > max) { max = a[i];} } printf("数组中最大的值为:%d\\n", max);return 0;} 这段...
编写程序,提示用户输入一个数并显示该数,使用字符模拟七段显示器的...
include<stdio.h>#include<stdbool.h>#defineMAX_DIGHTS 10\/* 0 1 _ 4 |_| 2 |_| 5 6 *\/boolsegments[10][7]= {{true,true,true,false,true,true,true}, \/*0*\/ {false,false,false,false,true,true,false},\/*1*\/ {true,false,true,true,true,fal...
微机原理编程题 10个数大小排序
以前做的实验 可以参考下 有一个10个字节的有符号数组,编程实验使该数组的元素按照从小到大的次序排列。data segment ;定义数据段 data1 db 32h,02h,01h,04h,0f1h,0f2h,0ffh,0fdh,0fah,79h count equ $-data1 data ends code segment assume:ds:data,cs:code start:mov ax,data mov...
用JAVA做一个循环得出数列的值
整个程序逻辑简单明了,易于理解和实现。通过这段代码,我们可以看到循环在处理序列数据时的强大功能。此外,这种编程方式还能够帮助我们熟悉Java的基本语法和数据结构使用。通过上述代码,我们可以看到,当i从0递增到8时,程序将依次输出数组arr中的每一个元素。例如,输出结果可能为:6,8,33,21,7,10,...
【高分】帮忙用汇编语言做一个程序:学生成绩统计
; 功能:键盘输入一个指定位数的十进制数字,将其转换成二进制数并保存在指定的内存单元。; 由于限定最大数据类型为字,所以,数字位数最多:5,最大无符号数:65536; 约定:直接回车,视为数字0; 入口:@@Digits=数字位数;di=保存输入的数字首地址; @@Type_Data=保存的数据类型,B=字节类型,W=字类型。; 出口:...