请哪位高手帮忙用汇编语言编写一段程序,求三个带符号字节数据中的最大值,并将该最大值存入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
请你把这个程序修改一下
我怎么把最大值输出,最大值为个数时可以输出,但最大值大于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
请你把这个程序修改一下
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
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
请哪位高手帮忙用汇编语言编写一段程序,求三个带符号字节数据中的最大值,并将该最大值存入MAX字单元中.
用汇编语言设计一个程序,求10个无符号数中的最大值.并将最大值存入变量MAX中
汇编语言编写 已知X、Y、Z、MAX为16位的带符号数,求三个数中最大值,结果存入MAX单元.
设计一个程序,求10个无符号数中的最大值.并将最大值存入变量MAX中
1.设计一个程序,求10个无符号书中的最大值.并将最大值存入变量MAX中.
设计一个程序,求10个无符号数中最大值,并将最大值存入变量MAX中
汇编语言,我是照着书上打的,为什么还有错误呢?程序功能:求将a,b,c3个数中的最大值并存入max单元中
汇编语言中,若自BLOCK 开始的内存缓冲区中有100个带符号的数,希望找到其中的最大值,并放在MAX 单元中
汇编语言,设ax bx cx中的数都是带符号数,下列程序求AX BX CX中最大值,结果在AX中,请写完整
在内部RAM的21H单元开始存有一组单字节无符号数,数据长度为20H,编写程序要求找出最大数存入MAX单元 .
汇编语言:在buffer为首地址的内存单元中,存放10个16位带符号数,求这10个数的最大值并保存到max单元中.
编写程序,计算具有10个分量的无符号整数数组中的最大值与最小值,并以max=……与min=……输出.