问题标题:
请哪位高手帮忙用汇编语言编写一段程序,求三个带符号字节数据中的最大值,并将该最大值存入MAX字单元中.我怎么把最大值输出,最大值为个数时可以输出,但最大值大于10时怎么输出?DATAx05SEG
问题描述:
请哪位高手帮忙用汇编语言编写一段程序,求三个带符号字节数据中的最大值,并将该最大值存入MAX字单元中.
我怎么把最大值输出,最大值为个数时可以输出,但最大值大于10时怎么输出?
DATAx05SEGMENT
N1x05DBx051,4,50
MAXx05DBx050
DATAx05ENDS
STACKx05SEGMENTSTACK
x05DBx05200x05DUP(0)
STACKx05ENDS
CODEx05SEGMENT
x05ASSUMECS:CODE,DS:DATA,SS:STACK
START:x05MOVx05AX,DATA
x05MOVx05DS,AX
x05MOVx05BX,OFFSETN1
x05MOVx05AL,[BX]
x05CMPx05AL,[BX+1]
x05JGx05S1
x05MOVx05AL,[BX+1]
S1:x05CMPx05AL,[BX+2]
x05JGx05S2
x05MOVx05AL,[BX+2]
S2:x05MOVx05MAX,AL
x05MOVx05DL,MAX
x05ADDx05DL,30H
x05MOVx05AH,2
x05INTx0521H
x05MOVx05AH,4CH
x05INTx0521H
CODEx05ENDS
x05ENDx05START
请你把这个程序修改一下
李宝泽回答:
n1db1,99,-2
maxdb0
.
.
movbx,offsetn1
moval,[bx]
cmpal,[bx+1]
jgs1
moval,[bx+1]
s1:
cmpal,[bx+2]
jgs2
moval,[bx+2]
s2:
movmax,al
牛立军回答:
谢谢,怎么把最大值在命令窗口输出。
李宝泽回答:
要实现输出比较麻烦:1、因为是带符号数,所以必须先判断正负,即高位是否为1,为1是负数(需求补码),否则为正。2、将该数除以100确定百位数字,余数再除以10确定十位数字,除以10后的余数为个位数字。3、将百位、十位及个位数字转换成ASCII码(即分别加上30H)4、分别将转换成ASCII码后的百位、十位及个位数字放入DX寄存器,用DOS的2号功能调用实现显示。说的很详细了,你应该可以自己看懂以下代码了。。。DATASEGMENTN1DB-1,-4,-50MAXDB0DATAENDSSTACKSEGMENTSTACKDB200DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVBX,OFFSETN1MOVAL,[BX]CMPAL,[BX+1]JGS1MOVAL,[BX+1]S1:CMPAL,[BX+2]JGS2MOVAL,[BX+2]S2:MOVMAX,ALtestal,80hjzzzznegalmovdl,'-'pushaxmovah,2int21hpopaxzzz:movah,0movdl,100divdlpushaxmovah,2movdl,aladddl,30hint21hpopaxmoval,ahmovah,0movdl,10divdladdax,3030hpushaxmovah,2movdl,alint21hpopaxmovdl,ahmovah,2int21hMOVAH,4CHINT21HCODEENDSENDSTART
查看更多