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

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-17
用汇编语言试编写一段程序,求三个带符号字符数据中的最大值,并将该最大值存入MAX字单元中。

DATASEGMENT
N1DB -1,-4,-50
MAXDB 0
DATA ENDS
STACKSEGMENT STACK
DB 200 DUP(0)
STACKENDS
CODESEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOVAX,DATA
MOVDS,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:MOVMAX,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

MOVAH,4CH
INT21H

CODEENDS
ENDSTART

;给你一个类型题让你自己看,差不多的意思,改改就可以了
;数据段中已经定义了一个有N个字数据的数组M,求出M中绝对值
;最大的数,把它放在M+2n单元中,并将该数的偏移地址存放在M+2(n+1)单元中
data segment
M dw 1,4,3,2,-1,-5,-8,-9,'$'
m1 dw 10 dup(?)
disa db 'the location of M+2n is : $'
disb db 'the location of M+2(n+1)is : $'
disc db 0dh,0ah,24h
data ends
stack segment stack
dw 100 dup(?)
top label word
stack ends
code segment
main proc far
assume ss:stack,cs:code,ds:data
start:mov ax,stack
mov ss,ax
lea sp,top
mov ax,data
mov ds,ax
xor si,si;用来放绝对值最大数的输出
lea bx,M
mov si,bx;记录第一个数的地址
mov cx,0;记录第一个数值假设是0
L1:mov ax,[bx]
cmp ax,24h
je L4
rol ax,1
and ax,1h
cmp ax,1;是负数的话就求原码
je L2
mov ax,[bx];正数的话就直接比较
mov di,0
cmp cx,ax
jbe L3
add bx,2
jmp L1

L2:mov di,1
mov ax,[bx];对负数进行求原码运算
sub ax,1
not ax
cmp cx,ax
jbe L3;记录绝对值比较大的数还有符号
add bx,2
jmp L1

L3:mov cx,ax;改变cx的值
mov si,bx;改变si的地址值
mov dx,di
add bx,2
jmp L1

L4:lea bx,m1
mov [bx-2],cx;M+2n存放绝对值最大的数
mov [bx],si;M+2(n+1)存放他的地址
mov [bx+2],dx;存放他的符号

L5:lea dx,disc;输出换行
mov ah,9
int 21h
lea dx,disa;输出提示语
mov ah,9
int 21h
lea bx,m1
mov dx,[bx+2]
cmp dx,0
je L51
mov dl,'-'
mov ah,2
int 21h
L51:xor si,si
lea bx,m1;把结果地址传给bx
mov si,[bx-2];把结果传给si
mov cx,4
L6:push cx
mov cl,4
rol si,cl
mov dx,si
and dl,0fh
cmp dl,9
jbe L7
add dl,7h
L7:add dl,30h
mov ah,2h
int 21h
pop cx
loop L6

L8:lea dx,disc;输出换行
mov ah,9
int 21h
lea dx,disb;输出提示语
mov ah,9
int 21h
xor si,si
lea bx,m1
mov si,[bx]
mov cx,4
L9:push cx
mov cl,4
rol si,cl
mov dx,si
and dl,0fh
cmp dl,9
jbe L10
add dl,7h
L10:add dl,30h
mov ah,2h
int 21h
pop cx
loop L9

mov ah,4ch
int 21h
main endp
code ends
end start

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) 9名评委,每个评委给分范围为0~10(整数); (2) 9名评委给分中,去掉一个最高分和一个最低分,剩余7名评委的平均分即为参赛者的得分(精确到小数点二位); (3) 将得分在光标位置处显示出来。请各位高手帮帮忙 ,急呀,先谢谢高手大虾们了。 展开 ...
  • 微机原理汇编语言问题,哪位高手帮忙解决下?要求写出程序注释,并把源程...
    答:MOV SI,OFFSET DATA1;把data1的偏移量给si MOV BX,05;初始bx,输出五个字符 CALL DISPL;调用displ输出data1 CRLF;回车换行 MOV DI,OFFSET DATA2;把data2的偏移量给di CALL ADDA;调用加法子程序,运算结果在data1中 MOV SI,OFFSET DATA1 MOV BX,05 CALL DISPL;输出结...
  • 汇编语言高手请进
    答:ORG 00H ;定义程序存储器地址00H START: NOP ;空指令(MCU上电时不稳定,一般会在复位地址 ;加NOP指令,防止程序跑非)MOV R3,#3 ;LOP2: MOV R4,#8 MOV R2,#0 LOP1: MOV P1,#0FFH ;设置P1口为全高(P1口应该是与LED的阳极相连 ;的)MOV DPTR,#TABA ;<查表(R2为相对偏...
  • 求汇编高手帮忙解释一下程序 高分悬赏,注释要清楚点,新手不懂
    答:学习汇编,最重要的,首先就应该把各个寄存器弄清楚,包括通用寄存器(AX,BX,CX,DX,BP,SP,SI,DI)、段寄存器(CS,DS,ES,SS)、状态及控制寄存器(FLAG,IP)把寄存器梳理清楚了,就是一些常用的指令了,包括机器指令、伪指令和宏指令。这些你还是慢慢去弄吧,想要学好一门语言,只要你肯花时间,足够...
  • 汇编程序设计,高手帮忙!!!
    答:CALL SET_WRITE_MODE ;将写模式设为写模式2 MOV AX,BKCOLOR CALL CLEAR ;将背景清成白色 MLINE 100,100,150,150 MLINE 300,100,250,150 MLINE 100,300,150,250 ;采用宏 PUSH 300 PUSH 300 PUSH 250 PUSH 250 CALL LINE ;直接调用画线函数 MRECTANGLE 100,100,300,300 MRECTANGLE 150...
  • 急求!请高手帮忙,用汇编语言编写一个加法运算器。请帮我写一个...
    答:DATA SEGMENT X DW ?SYMBOL DB ?Y DW ?Z DW ?DISPINFO1 DB 'NOT YUNSUAN CHAR!','$'DISPINFO2 DB 'YUSHU IS:$'CUAN DW 10000,1000,100,10,1 DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE START: MOV AX,DATA MOV DS,AX BINGIN: ...
  • 各位高手帮我解决一个汇编程序吧
    答:(1)org是指定地址计数器的当前值,也就是说用org指定一个地址后,下面再分配的内存单元就是从指定位置开始。题目中指定了org 30H,那么下一个要分配的单元就是30H。而EQU是符号定义伪指令,它定义的符号就相当于C语言里的符号常量,并不占用存储空间。所以,S1的偏移地址就是30H。S1占用了8个单元...
  • 汇编语言 求检查、修改程序
    答:;以下为问题与本人编写的程序:;从BUF单元开始存有一字符串(长度<255),编程实现统计该字符串中的ASCII码在42H~45H之间的字符个 ;数,并将统计结果以二进制形式显示在屏幕。;DATA SEGMENT BUF DB 255 DB ?DB 255 DUP(?)crlf db 0dh,0ah,24h;回车换行 n db 0;统计...
  • 求个高手帮忙用80c51单片机汇编编写一段程序,通过实验箱上的钮子开 ...
    答:假设P3.0接K1信号,P3.1接K2信号,P3.2接K3信号 ORG 4000H LJMP START START:MOV A,P3 ANL A,#07H //屏蔽P3口高5位,只有P3.0-P3.2 JZ L1 // A=0,说明P3.0-P3.2全为0 CJNE A,#07H,L2 //A=7,说明P3.0-P3.2全为1 L1:MOV P1,#00H SJMP L3 L2:CJNE A,#03H...
  • 汇编语言程序设计题
    答:请各位达人帮忙,题目如下:从键盘上输入2个10位数以内(位数可变)十六进制数,对其求和并显示结果,程序运行时提示输入加数和被加数,求完和显示结果后,显示继续和退出。非常谢谢!... 请各位达人帮忙,题目如下:从键盘上输入2个10位数以内(位数可变)十六进制数,对其求和并显示结果,程序运行时提示输入加数和被加数,求完和...