AX=1000H,CL=90H,则执行指令DIVCL之后,AX=()。
时间: 2023-08-27 12:04:10 浏览: 287
执行 DIV 指令时,它将被除数存储在 AX 寄存器中,除数存储在通用寄存器或内存中。在本题中,被除数是 AX,除数是 CL。执行 DIV CL 后,除法运算的结果会存储在 AL 中,商存储在 AH 中。
因为 AX=1000H,所以被除数为 1000H。因为 CL=90H,所以除数为 90H。所以 AX/CL=1000H/90H=11H......70H。商为 11H,余数为 70H。
因此,执行 DIV CL 后,AX 的值为商 11H,即 AX=0011H。
相关问题
设有一数据区有10个有符号数的字节数据(如55,78H,43,-19,0,1,10,80H,0FFH,100),位于数据段偏移地址为1000H开始的10个内存单元中。编写程序找出其中的最大数和最小数,分别存入BH和BL;然后求其中最大值和最小值的平均值,存入AL。 要求:将求最大最小值设计为子程序,并画出子程序流程图;在主程序里调用该子程序、求平均值,并绘制主程序流程图。 提示: (1)子程序,也称过程,定义子程序相关的伪指令为 PROC、ENDP。子程序里的最后一句指令应为返回指令RET。 (2)在主程序里调用子程序的指令为CALL。注意调用结束返回主程序后,程序执行的过程,以免意外顺序的执行子程序引起错误。 (3)使用$、OFFSET等伪指令,可简化程序设计
下面是这个问题的程序代码和流程图。
程序代码:
```
DATA SEGMENT
NUMS DB 55,78H,43,-19,0,1,10,80H,0FFH,100
DATA ENDS
CODE SEGMENT
START:
MOV AX, @DATA
MOV DS, AX
;找到最大值和最小值
CALL FIND_MAX_MIN
;将最大值和最小值存入 BH 和 BL
MOV BH, MAX
MOV BL, MIN
;求平均值
MOV AL, MAX
ADD AL, MIN
MOV AH, 0
ADC AH, 0
MOV CL, 1
DIV CL
;将平均值存入 AL
MOV AL, BL
;结束程序
MOV AH, 4CH
INT 21H
FIND_MAX_MIN PROC
;初始化最大值和最小值为第一个数
MOV MAX, NUMS
MOV MIN, NUMS
;循环比较
MOV CX, 9
MOV SI, 1
LOOP_START:
MOV AL, NUMS[SI]
CMP AL, MAX
JG UPDATE_MAX
CMP AL, MIN
JL UPDATE_MIN
INC SI
LOOP LOOP_START
;返回
RET
UPDATE_MAX:
MOV MAX, AL
INC SI
JMP LOOP_START
UPDATE_MIN:
MOV MIN, AL
INC SI
JMP LOOP_START
FIND_MAX_MIN ENDP
CODE ENDS
END START
```
流程图:
```
+-----------------+
| START |
+-----------------+
| MOV AX, @DATA |
| MOV DS, AX |
| CALL FIND_MAX_MIN|
| MOV BH, MAX |
| MOV BL, MIN |
| MOV AL, MAX |
| ADD AL, MIN |
| MOV AH, 0 |
| ADC AH, 0 |
| MOV CL, 1 |
| DIV CL |
| MOV AL, BL |
| MOV AH, 4CH |
| INT 21H |
+-----------------+
+-------------------+
| FIND_MAX_MIN |
+-------------------+
| MOV MAX, NUMS |
| MOV MIN, NUMS |
| MOV CX, 9 |
| MOV SI, 1 |
| LOOP_START: |
| MOV AL, NUMS[SI] |
| CMP AL, MAX |
| JG UPDATE_MAX |
| CMP AL, MIN |
| JL UPDATE_MIN |
| INC SI |
| LOOP LOOP_START |
| RET |
| UPDATE_MAX: |
| MOV MAX, AL |
| INC SI |
| JMP LOOP_START |
| UPDATE_MIN: |
| MOV MIN, AL |
| INC SI |
| JMP LOOP_START |
+-------------------+
```
一、实验目的 1、学习子程序(过程)的定义和调用方法。 2、学习$、OFFSET等伪指令。 3、进一步学习程序执行的流程。 二、实验内容 设有一数据区有10个有符号数的字节数据(如55,78H,43,-19,0,1,10,80H,0FFH,100),位于数据段偏移地址为1000H开始的10个内存单元中。编写程序找出其中的最大数和最小数,分别存入BH和BL;然后求其中最大值和最小值的平均值,存入AL。 要求:将求最大最小值设计为子程序,并画出子程序流程图;在主程序里调用该子程序、求平均值,并绘制主程序流程图。
以下是汇编语言实验的代码和流程图。
代码:
```
assume cs:code, ds:data
data segment
arr db 55h, 78h, 43h, -19, 0, 1, 10, 80h, 0FFh, 100
data ends
code segment
start:
mov ax, data
mov ds, ax
call find_max_min
mov bh, byte ptr max
mov bl, byte ptr min
add bh, bl
mov al, bh
mov ah, 0
mov cl, 2
div cl
mov ax, 4c00h
int 21h
find_max_min proc
mov si, offset arr
mov al, [si]
mov max, al
mov min, al
inc si
mov cx, 9
loop_start:
mov al, [si]
cmp al, max
jg update_max
cmp al, min
jl update_min
inc si
loop loop_start
ret
update_max:
mov max, al
jmp common_update
update_min:
mov min, al
common_update:
inc si
loop loop_start
find_max_min endp
code ends
```
流程图:
```
start
|
|__mov ax, data
| mov ds, ax
| call find_max_min
| mov bh, byte ptr max
| mov bl, byte ptr min
| add bh, bl
| mov al, bh
| mov ah, 0
| mov cl, 2
| div cl
| mov ax, 4c00h
| int 21h
|
|__find_max_min
|
|__mov si, offset arr
| mov al, [si]
| mov max, al
| mov min, al
| inc si
|
|__mov cx, 9
|__loop_start:
|
|__mov al, [si]
| cmp al, max
| jg update_max
| cmp al, min
| jl update_min
|
|__inc si
|__loop loop_start
|
|__update_max:
|
|__mov max, al
|__jmp common_update
|
|__update_min:
|
|__mov min, al
|
|__common_update:
|
|__inc si
|__loop loop_start
```
阅读全文