首页 > 电脑 > 汇编语言实现顺序查找,给定字型有符号整数数组的长度n,输入字型有符号整数及待

汇编语言实现顺序查找,给定字型有符号整数数组的长度n,输入字型有符号整数及待

电脑 2022-11-22

汇编语言、编写有符号字型序列,按从小到大的顺序的排序程序,并将排序前后的数据分别显示出来

dsegsegment
a1dw1212h,3434h,5656h,7878h,9090h,2121h,4343h,6565h,8787h,9999h
cequ($-a1)/2
dsegends
assumecs:cseg,ds:dseg
csegsegment
start:
movax,dseg
movds,ax
movcx,c*2
deccx
deccx
$0:
movbx,0
$2:
movax,a1[bx]
cmpax,a1[bx+2]
jl$1
xchgax,a1[bx+2]
mova1[bx],ax
$1:
incbx
incbx
cmpbx,cx
jl$2
deccx
deccx
jg$0
;printresult
movcx,c
movbx,0
$3:
movax,a1[bx]
callprint
movax,0e20h
int10h
incbx
incbx
loop$3
movah,4ch
int21h
printprocnear
pushcx
pushbx
xorcx,cx
movbx,10
testax,8000h
jzQ0
pushax
movah,0eh
moval,'-'
int10h
popax
negax
Q0:
xordx,dx
divbx
xordx,0e30h
pushdx
inccx
cmpax,0
jnzQ0
Q1:
popax
int10h
loopQ1
popbx
popcx
ret
printendp
csegends
endstart

用汇编语言编写程序完成:要求从键盘上输入N个带符号数的字数据,求出该其最大值和最小值,并在屏幕显示

CODESEGMENT
ASSUMECS:CODE
MAXDW-32768
MINDW32767

START:PUSHCS
POPDS
PUSHCS
POPES
CALLINPUTNUM
CALLLFCR
LEASI,@ARRAY
MOVCX,@NUM
CLD
@0:
LODSW
CMPAX,MAX
JLE@1
MOVMAX,AX
@1:
CMPAX,MIN
JGE@2
MOVMIN,AX
@2:
LOOP@0
MOVAX,MAX
CALLDSPAXS
CALLLFCR
MOVAX,MIN
CALLDSPAXS

MOVAH,4CH
INT21H
;==============================
LFCRPROCNEAR
PUSHAX
PUSHDX
MOVAH,2
MOVDL,13
INT21H
MOVDL,10
INT21H
POPDX
POPAX
RET
LFCRENDP
;===============================================
;键盘输入数值数组子程序(数组名为@array,元素个数存放在@num中)
;可以是负数
;采用字符串缓冲方式输入
INPUTNUMPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHSI
PUSHDI
PUSHF
;对数组@array清零
MOVCX,100
MOVAX,0
LEADI,@ARRAY
CLD
REPSTOSW
;;;;;;;;;;;;;;;;;;;;;;;;;;;;初始化序号数组
MOVCX,100
MOVAX,1
LEADI,@XUHAO
@WXUHAO:
STOSW
INCAX
LOOP@WXUHAO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVWORDPTR@NUM,0
;输入的数据以一个空格分隔,以回车符结束输入
LEADX,@STRA
MOVAH,10
INT21H
MOVCL,@STRN
MOVCH,0
MOVWORDPTR@STRM,CX
LEASI,@STR
CLD

LEADI,@ARRAY;将数组第一个元素的有效地址置入DI
MOVWORDPTR@NUM,0
@STIN:
MOVAX,0
PUSHAX
MOVBYTEPTR@SIGNN,0
@AGAIN1:
CMPWORDPTR@STRM,0
JE@LINE0
LODSB
DECWORDPTR@STRM
CMPAL,''
JE@LINE0
CMPAL,'-'
JNE@INPUT1
MOVBYTEPTR@SIGNN,1
JMP@AGAIN1
@INPUT1:
SUBAL,30H
MOVAH,0
MOVBX,AX
POPAX
MOVCL,10
MOVCH,0
MULCX
ADDAX,BX
PUSHAX
JMP@AGAIN1
@LINE0:
POPAX
CMPBYTEPTR@SIGNN,1
JNE@INPUT2
NEGAX
@INPUT2:
MOVWORDPTR[DI],AX
INCWORDPTR@NUM
CMPWORDPTR@STRM,0
JE@STINEND
INCDI
INCDI
JMP@STIN
@STINEND:
POPF
POPDI
POPSI
POPDX
POPCX
POPBX
POPAX
RET
@STRADB255
@STRNDB?
@STRDB255DUP(?)
@STRMDW0
@ARRAYDW100DUP(0)
@NUMDW0
@CHARDB?
@SIGNNDB0
@XUHAODW100DUP(0)
INPUTNUMENDP
;===============================
DSPAXSPROCNEAR
PUSHAX
TESTAX,8000H
JNS@DSPAXS1
PUSHAX
PUSHDX
MOVAH,2
MOVDL,'-'
INT21H
POPDX
POPAX
NEGAX
@DSPAXS1:
CALLDSPAX
POPAX
RET
DSPAXSENDP
;===============================
DSPAXPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHF
XORCX,CX
MOVBX,10
@DSPAX1:
XORDX,DX
DIVBX
INCCX
ORDX,30H
PUSHDX
CMPAX,0
JNE@DSPAX1
MOVAH,2
@DISPAX2:
POPDX
INT21H
LOOP@DISPAX2
POPF
POPDX
POPCX
POPBX
POPAX
RET
DSPAXENDP
;==============================
CODEENDS
ENDSTART

急!汇编语言程序1、从键盘输入N个带符号数(N的值也从键盘输入,N<65535);带符号数为16位二进制数范围;

程序分析是什么?程序框图么?这个程序试试看行不。 DATAS SEGMENT X dw 0 N dw 0 m1 db 'Input N:$' m2 db 0dh,0ah,'$' m3 db 'Overflow$' m4 db 'Input Number:$' m5 db 'Result:$' DATAS ENDS STACKS SEGMENT db 20 dup(0) STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV AX,STACKS MOV SS,AX

用汇编语言实现:有十个有符号数,按从小到大的顺序排列。 例如:1,-1,2,-2,3,-3,4,-4,5,-5

10个有符号数从键盘输入:
CODESEGMENT
ASSUMECS:CODE
ORG100H
START:PUSHCS
POPDS
PUSHCS
POPES
CALLINPUTNUM
LEASI,@ARRAY
MOVCX,@NUM
CALLSORT

MOVAH,2
MOVDL,13
INT21H
MOVDL,10
INT21H

MOVCX,@NUM
LEASI,@ARRAY
CLD
@MAIN:
LODSW
CALLDISPAXS
LOOP@MAIN

MOVAH,4CH
INT21H
;===============================
;字数组排序(冒泡排序)
SORTPROCNEAR
;数组长度置入cx,字数组首地址置入si
PUSHAX
PUSHCX
PUSHDX
PUSHSI
PUSHDI
PUSHF
PUSHCX
POPDX
DECDX
@SORTL1:
MOVCX,DX
MOVDI,SI
@SORTL2:
MOVAX,[DI+2]
CMPAX,[DI]
JG@SORTNEXT
XCHGAX,[DI]
MOV[DI+2],AX
@SORTNEXT:
INCDI
INCDI
LOOP@SORTL2
DECDX
JNZ@SORTL1
POPF
POPDI
POPSI
POPDX
POPCX
POPAX
RET
SORTENDP
;===============================================
;键盘输入数值数组子程序(数组为@array,元素个数为@num)
;可以是负数
INPUTNUMPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHSI
PUSHDI
PUSHF
;对数组@array清零
MOVCX,100
MOVAX,0
LEADI,@ARRAY
REPSTOSW
MOVWORDPTR@NUM,0
;输入的数据以一个空格分隔,以回车符结束输入
LEADX,@STRA
MOVAH,10
INT21H
MOVCL,@STRN
MOVCH,0
MOVWORDPTR@STRM,CX
LEASI,@STR
CLD
LEADI,@ARRAY
MOVWORDPTR@NUM,0
@STIN:
MOVAX,0
PUSHAX
MOVBYTEPTR@SIGNN,0
@AGAIN1:
CMPWORDPTR@STRM,0
JE@LINE0
LODSB
DECWORDPTR@STRM
CMPAL,''
JE@LINE0
CMPAL,'-'
JNE@INPUT1
MOVBYTEPTR@SIGNN,1
JMP@AGAIN1
@INPUT1:
SUBAL,30H
MOVAH,0
MOVBX,AX
POPAX
MOVCL,10
MOVCH,0
MULCX
ADDAX,BX
PUSHAX
JMP@AGAIN1
@LINE0:
POPAX
CMPBYTEPTR@SIGNN,1
JNE@INPUT2
NEGAX
@INPUT2:
MOVWORDPTR[DI],AX
INCWORDPTR@NUM
CMPWORDPTR@STRM,0
JE@STINEND
INCDI
INCDI
JMP@STIN
@STINEND:
POPF
POPDI
POPSI
POPDX
POPCX
POPBX
POPAX
RET
@STRADB255
@STRNDB?
@STRDB255DUP(?)
@STRMDW0
@ARRAYDW100DUP(0)
@NUMDW0
@CHARDB?
@SIGNNDB0
INPUTNUMENDP
;=========================================
;将要显示的有符号数置于ax中
DISPAXSPROCNEAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHSI
PUSHDI
PUSHBP
PUSHDS
PUSHES
PUSHF
PUSHCS
POPDS
PUSHCS
POPES
MOVCX,6
LEADI,DISPAXSS
@DISPAXS:
MOVBYTEPTR[DI],32
INCDI
LOOP@DISPAXS
PUSHAX
MOVDL,32
MOVAH,2
INT21H
POPAX
MOVBYTEPTRNZS,0
MOVBYTEPTRSIGNS,0
CMPAX,0
JGE@DISPAXS0
MOVBYTEPTRSIGNS,1
NEGAX
@DISPAXS0:
PUSHAX
LEASI,DIVARRS
LEADI,DISPAXSS
INCDI
MOVCX,5
@DISPAXS1:
POPAX
MOVDX,0
MOVBX,[SI]
DIVBX
PUSHDX
CMPAL,0
JNE@DISPAXS2
CMPBYTEPTRNZS,1
JE@DISPAXS2
CMPCX,1
JE@DISPAXS2
MOVDL,20H
JMP@DISPAXS3
@DISPAXS2:
ADDAL,30H
MOVDL,AL
MOVBYTEPTRNZS,1
@DISPAXS3:
MOVBYTEPTR[DI],DL
INCSI
INCSI
INCDI
LOOP@DISPAXS1
POPDX
CMPBYTEPTRSIGNS,1
JNE@DISPAXS6
LEASI,DISPAXSS
ADDSI,5
@DISPAXS4:
CMPBYTEPTR[SI],32
JE@DISPAXS5
DECSI
JMP@DISPAXS4
@DISPAXS5:
MOVBYTEPTR[SI],'-'
@DISPAXS6:
LEADX,DISPAXSS
MOVAH,9
INT21H
POPF
POPES
POPDS
POPBP
POPDI
POPSI
POPDX
POPCX
POPBX
POPAX
RET
DIVARRSDW10000,1000,100,10,1
NZSDB0
SIGNSDB0
DISPAXSSDB32,32,32,32,32,32,'$'
DISPAXSENDP
;==================================
CODEENDS
ENDSTART

用汇编语言实现对无序数组排序,且查找数组中出现的关键字

dseg segment block db 12,37,25,9,43,59,17,32 n dw $ - block key db 37 found1 db "found","$" nfound1 db "not found","$" dseg ends cseg segment assume cs:cseg,ds:dseg start: mov ax,dseg mov ds,ax mov bx,offset block mov cx,n dec cx again1: mov di,cx ;暂存cx 因为是双重循环 mov si,0000h again2: mov al,[bx+si] cm

标签:信息技术 汇编语言 编程 符号 编程语言

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18