作业帮 > 综合 > 作业

请哪位高手帮忙用汇编语言编写一段程序,求三个带符号字节数据中的最大值,并将该最大值存入MAX字单元中.

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/15 22:08:39
请哪位高手帮忙用汇编语言编写一段程序,求三个带符号字节数据中的最大值,并将该最大值存入MAX字单元中.
我怎么把最大值输出,最大值为个数时可以输出,但最大值大于10时怎么输出?
DATA\x05SEGMENT
N1\x05DB \x051,4,50
MAX\x05DB \x050
DATA \x05ENDS
STACK\x05SEGMENT STACK
\x05DB \x05200 \x05 DUP(0)
STACK\x05ENDS
CODE\x05SEGMENT
\x05ASSUME CS:CODE,DS:DATA,SS:STACK
START:\x05MOV\x05AX,DATA
\x05MOV\x05DS,AX
\x05MOV \x05BX,OFFSET N1
\x05MOV \x05AL,[BX]
\x05CMP \x05AL,[BX+1]
\x05JG \x05S1
\x05MOV \x05AL,[BX+1]
S1:\x05CMP \x05AL,[BX+2]
\x05JG \x05S2
\x05MOV \x05AL,[BX+2]
S2:\x05MOV\x05MAX,AL
\x05MOV\x05DL,MAX
\x05ADD\x05DL,30H
\x05MOV\x05AH,2
\x05INT\x0521H
\x05MOV\x05AH,4CH
\x05INT\x0521H
CODE\x05ENDS
\x05END\x05START
请你把这个程序修改一下
请哪位高手帮忙用汇编语言编写一段程序,求三个带符号字节数据中的最大值,并将该最大值存入MAX字单元中.
n1 db 1,99,-2
max db 0
.
.
mov bx,offset n1
mov al,[bx]
cmp al,[bx+1]
jg s1
mov al,[bx+1]
s1:
cmp al,[bx+2]
jg s2
mov al,[bx+2]
s2:
mov max,al
再问: 谢谢,怎么把最大值在命令窗口输出。
再答: 要实现输出比较麻烦: 1、因为是带符号数,所以必须先判断正负,即高位是否为1,为1是负数(需求补码),否则为正。 2、将该数除以100确定百位数字,余数再除以10确定十位数字,除以10后的余数为个位数字。 3、将百位、十位及个位数字转换成ASCII码(即分别加上30H) 4、分别将转换成ASCII码后的百位、十位及个位数字放入DX寄存器,用DOS的2号功能调用实现显示。 说的很详细了,你应该可以自己看懂以下代码了。。。 DATA SEGMENT N1 DB -1,-4,-50 MAX DB 0 DATA ENDS STACK SEGMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV BX,OFFSET N1 MOV AL,[BX] CMP AL,[BX+1] JG S1 MOV AL,[BX+1] S1: CMP AL,[BX+2] JG S2 MOV AL,[BX+2] S2: MOV MAX,AL test al,80h jz zzz neg al mov dl,'-' push ax mov ah,2 int 21h pop ax zzz: mov ah,0 mov dl,100 div dl push ax mov ah,2 mov dl,al add dl,30h int 21h pop ax mov al,ah mov ah,0 mov dl,10 div dl add ax,3030h push ax mov ah,2 mov dl,al int 21h pop ax mov dl,ah mov ah,2 int 21h MOV AH,4CH INT 21H CODE ENDS END START