【发布时间】:2021-07-28 09:47:18
【问题描述】:
我有一个汇编程序,它应该找到并打印出给定数组中的最大数字。我的问题是我知道最大的数字是 ABh,但程序最多只能读取 56h。我注意到它无法读取大量数字。
以下是我更具体的问题:
- 9Ah 和 ABh 有多少位?
- 如果这些数字不能存储在
AL寄存器中,我将如何存储这些值并比较它们以找到最大的值?
代码如下:
.MODEL SMALL
READ MACRO MSG
MOV AH,0AH
LEA DX,MSG
INT 21H
ENDM
PRINT MACRO MSG
MOV AH,09H
LEA DX,MSG
INT 21H
ENDM
.STACK 100H
ASSUME CS:CODE, DS:DATA
DATA SEGMENT
CR EQU 0DH
LF EQU 0AH
MSG1 DB "The array is: 52H,23H,56H,45H,9AH,ABH$"
MSG2 DB CR,LF,"The largest number is: $"
LIST DB 52H,23H,56H,45H,45H,9AH,0ABH
COUNT EQU 0Fh
LARGEST DB 04H DUP (?)
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
PRINT MSG1
MOV SI,OFFSET LIST
MOV CL,COUNT
MOV AL,[SI]
AGAIN: CMP AL,[SI+1]
JNL NEXT
MOV AL,[SI+1]
NEXT: INC SI
DEC CL
JNZ AGAIN
MOV SI,OFFSET LARGEST
MOV [SI],AL
;HOW TO PRINT VALUE OF AL?
MOV AH,4CH
INT 21H
CODE ENDS
END START
【问题讨论】:
标签: assembly x86-16 unsigned signed emu8086