关于8086/8088汇编 小测

1. (填空题)

在以BLOCK为首地址处存放100个无符号字节数。试编写一程序,求出该数组中的最大数与最小数的差,并将其送入RESULT单元,要求调用子程序来完成对最大数和最小数的求解。

DATA SEGMENT

       BLOCK DB 56,42,66,87,88,88,68,67,58,97,66,86,77

        COUNT EQU $-XX

       RESULT DB 0

DATA ENDS

CODE SEGMENT

             ASSUME CS: CODE, DS: DATA

         START:

                    MOV AX, (第1空)

                    MOV DS, AX

                    MOV (第2空), 100 ;假设最小的数

                    MOV (第3空), 0 ;假设最大的数

                    LEA SI, (第4空)

                    MOV CX, (第5空)

                    CALL MAXMIN

                    SUB AH,AL

                    MOV RESULT,(第6空)

            EXIT: MOV AX, 4C00H

                    INT 21H

                    MAXMIN PROC

                    MOV AH,0 ;存放大数

                    MOV AL,255 ;存放小数

        AGAIN: MOV DL,(第7空)

                    CMP (第8空),DL

                    JBE SKIP1

                    MOV AL,DL ;比预设最小值还小,保留

           SKIP1: CMP AH,DL

                    JAE SKIP2

                    MOV AH,DL ;比预设最大值还大,保留

          SKIP2: (第9空) SI

                    LOOP (第10空)

                    RET

          MAXMIN ENDP

CODE ENDS

END START

MOV AX, (第1空):这个指令将数据段的段地址放入AX寄存器。通常,数据段地址是通过符号化名称(DATA)来表示的。所以第1空应填 DATA

MOV (第2空), 100:这里要将数字100放到一个寄存器中。这个寄存器将用来遍历数组。一般使用CX寄存器进行循环,所以第2空应填 CX

MOV (第3空), 0:这里是将假设的最大值设为0。我们使用AH寄存器存储最大值,因此第3空应填 AH

LEA SI, (第4空):这里要将数组的起始地址放入SI寄存器。这个数组在BLOCK中,所以第4空应填 BLOCK

MOV CX, (第5空):这里已经在第2空中使用了CX寄存器,所以这条指令是不必要的,可以删除或者忽略。

MOV RESULT,(第6空):这里要将结果存入RESULT单元中。所以第6空应填 AH(因AH存储了最大值减去最小值后的结果)。

MOV DL,(第7空):这里要将当前数组元素(由SI指向的)加载到DL寄存器中。因此第7空应填 [SI]

CMP (第8空),DL:这里是将当前元素与当前最小值进行比较。AL存储最小值,因此第8空应填 AL

SKIP2: (第9空) SI:这里是要将SI指针移动到下一个元素。通常使用 INC SI 来实现。

LOOP (第10空):这里是控制循环返回到 AGAIN 标签处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值