汇编实例Word格式.docx
- 文档编号:21968350
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:23
- 大小:19.78KB
汇编实例Word格式.docx
《汇编实例Word格式.docx》由会员分享,可在线阅读,更多相关《汇编实例Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
MOVAL,BL
ANDAL,OFH
ADDAL,30H
CMPAL,3AH
JLPRINTIT
ADDAL,7H
PRINTIT:
MOVDL,AL
MOVAH,2
INT21H
DECCH
JNZROTATE
RET
CODEENDS
ENDSTART
例3:
在ADDR单元中存放着数Y的地址,试编制一程序把Y中1的个数存入COUNT单元中。
DATASEGMENT
ADDRDWNUMBER
NUMBERDWY
COUNTDW?
DATAENDS
ASSUMECS:
CODE,DS:
DATA
PUSHDS
SUBAX,AX
PUSHAX
MOVAX,DATA
MOVDS,AX
MOVCX,0
MOVBX,ADDR
MOVAX,[BX]
REPEAT:
TESTAX,0FFFFH
JZEXIT
JNSSHIFT
INCCX
SHIFT:
SHLAX,1
JMPREPEAT
EXIT:
MOVCOUNT,CX
例4:
将正数N插入一个已整序的字数组的正确位置。
该数组的首地址和末地址分别为ARRAY_HEAD和ARRAY_END,其中所有数均为正数且已按递增的次序排列。
ARRAY_HEADDW3,5,15,23,37,49,52,65,78,99
ARRAY_ENDDW105
NDW32
MOVAX,N
MOVARRAY_HEAD-2,0FFFFH
MOVSI,0
COMPARE:
CMPARRAY_END[SI],AX
JLEINSERT
MOVBX,ARRAY_END[SI]
MOVARRAY_END[SI+2],BX
SUBSI,2
JMPSHORTCOMPARE
INSERT:
MOVARRAY_END[SI+2],AX
例5:
(逻辑尺示例)设有数组X和Y。
X数组中有X1,…X10;
Y数组中有Y1,…Y10;
试编制程序计算Z1=X1+Y1Z2=X2+Y2Z3=X3-Y3Z4=X4-Y4Z5=X5-Y5Z6=X6+Y6Z7=X7-Y7Z8=X8-Y8
Z9=X9+Y9Z10=X10+Y10。
XDWX1,X2,X3,X4,X5,X6,X7,X8,X9,X10
YDWY1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Y9,Y19
ZDWZ1,Z2,Z3,Z4,Z5,Z6,Z7,Z8,Z9,Z19
LOGIC_RULEDW00DCH
MOVBX,0
MOVCX,10
MOVDX,LOGIN_RULE
NEXT:
MOVAX,X[BX]
SHRDX,1
JCSUBTRACT
ADDAX,Y[BX]
JMPSHORTRESULT
SUBTRACT:
SUBAX,Y[BX]
RESULT:
MOVZ[BX],AX
ADDBX,2
LOOPNEXT
例6:
编程实现:
比较两个字符串STR1和STR2所含字符是否相等,若相等则显示“MATCH”,若不相等则显示“NOMATCH”。
(两个字符串均在数据段给出)
STR1DB'
ABCDFE'
COUT1DB$-STR1
STR2DB'
ABCDF'
COUT2DB$-STR2
FINDDB'
MATCH'
0DH,0AH,'
$'
NOFINDDB'
NOMATCH'
ASSUMECS:
CODE,DS:
DATA,ES:
MOVES,AX
MOVBL,COUT1
CMPBL,COUT2
JNEDISPNO
LOOP1:
MOVCL,COUT1
MOVCH,0
LEASI,STR1
LEADI,STR2
REPECMPSB
MOVAH,09H
LEADX,FIND
JMPEXIT
DISPNO:
MOVAH,09
LEADX,NOFIND
MOVAH,4CH
老师给的:
MOVCX,STR2-STR1
CMPCX,FIND-STR2
JNZDISPNO
REPECMPSB
MOVAH,09H
MOVAH,4CH
例7:
(其中一个字符串在数据段给出,另一个用键盘输入,比较字符串是否相等)
STR1DB21
DB?
DB21DUP(?
)
ABC'
COUNTEQU$-STR2
ASSUMEDS:
DATA,CS:
CODE,ES:
MOVES,AX
MOVDX,OFFSETSTR1
MOVAH,0AH
MOVCX,COUNT
CMPCL,STR1+1
LEASI,STR1+2
MOVCX,COUNT
MOVAH,4CH
例8:
(两个数均用键盘输入,比较字符串是否相等)
STR1DB20
DB20DUP(?
STR2DB20
MOVDX,OFFSETSTR2
MOVAL,STR1+1
CMPAL,STR2+1
LEADI,STR2+2
MOVCL,STR1+1
MOVCH,0
例9:
已知字数组A包含5个互不相等的整数,字数组B包含5个互不相等的整数,编程实现:
把既在A中又在B中出现的整数存放到字数组C中。
ADW2,6,8,9,3
BDW5,8,3,9,7
CDW5DUP(0)
MOVAX,DATA
MOVDS,AX
MOVSI,0
MOVBX,0
MOVCX,5
LOOP1:
PUSHCX
MOVDI,0
MOVAX,A[SI]
LOOP2:
CMPB[DI],AX
JNENO
MOVC[BX],AX
ADDBX,2
NO:
ADDDI,2
LOOPLOOP2
ADDSI,2
POPCX
LOOPLOOP1
MOVAH,4CH
INT21H
ENDSTART
例10:
若两个指定的字节变量相等则调用ALLSAME子程序,显示“Y”,否则调用“NOTSAME”子程序,显示“N”。
VAR1DB1
VAR2DB2
MAINPROCFAR
MOVAL,VAR1
CMPAL,VAR2
JESAME
CALLNOTSAME
JMPEXITCMP
SAME:
CALLALLSAME
EXITCMP:
MAINENDP
ALLSAMEPROCNEAR
MOVDL,'
Y'
ALLSAMEENDP
NOTSAMEPROCNEAR
N'
NOTSAMEENDP
例11:
编程:
在显示器上显示HELLO字符串。
BUFDB'
HELLO'
'
MOVDX,OFFSETBUF
MOVAH,9
例12:
从键盘输入一字符串(最多20个字符)到数据段中以CHAR为首地址的区域。
CHARDB21
DATA,ES:
MOVAX,0
MOVDX,OFFSETCHAR
例13:
将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL和DL中。
(不要求有输出,用debug查看结果)
XDW1234H
MEMDB4DUP(?
ASSUMEDS:
DATA,CS:
CODE
MOVCL,4
LEABX,MEM
MOVAX,X
A1:
MOVDX,AX
ANDDX,0FH
MOVBYTEPTR[BX],DL
INCBX
SHRAX,CL
JNZA1
B1:
MOVDL,MEM
MOVCL,MEM+1
MOVBL,MEM+2
MOVAL,MEM+3
例14:
运用子程序,键盘上输入一个十进制数,用十六进制显示出来,
DECIHEXSEGMENT
DECIHEX
CALLDECIBIN
CALLCRLF
CALLBINIHEX
DECIBINPROCNEAR
NEWCHAR:
MOVAH,1
SUBAL,30H
JLEXIT
CMPAL,9D
JGEXIT
CBW
XCHGAX,BX
MOVCX,10D
MULCX
ADDBX,AX
JMPNEWCHAR
DECIBINENDP
BINIHEXPROCNEAR
ROTATE:
ROLBX,CL
MOVAL,BL
ANDAL,0FH
ADDAL,30H
CMPAL,3AH
JLPRINTIT
ADDAL,7H
BINIHEXENDP
CRLFPROCNEAR
MOVDL,0DH
INT21H
MOVDL,0AH
MOVAH,2
RET
CRLFENDP
DECIHEXENDS
ENDMAIN
例15:
8251初始化CPU发送十个字节
ORG100H
JMPINIT
BUFFDB'
0123456789'
INIT:
MOVDX,362H
MOVAL,0
MOVDX,AL
MOVAL,40H
MOVAL,0FEH
OUTDX,AL
MOVAL,01H
MOVSI,OFFSETBUFF
YYY1:
INAL,DX
TESTAL,01H
JEYYY1
MOVAL,[SI]
MOVDX,360H
LOOPYYY1
例16:
在以STR为首地址的缓冲区中,有一组字符串,该字符串以“$”为结束符,编程统计该字符串的长度,结果存入RUS变量中。
STRDB'
ABCDE$'
RUSDW?
MOVBL,STR[SI]
CMPBL,'
JEEXIT
JMPNEXT
MOVRUS,CX
例17:
从键盘输入一系列以$为结束符的字符串,然后统计其中的非数字字符数。
BUFDB50DUP(?
COUNTDB0
LEABX,BUF
INPUT:
MOV[BX],AL
CMPAL,'
JNZINPUT
MOVCL,[BX]
CMPCL,'
JZDISP
CMPCL,30H
JBCONT
CMPCL,39H
JBENEXT
CONT:
INCCOUNT
DISP:
MOVAL,COUNT
MOVAH,0
例18:
在DAT字节单元中有一个带符号数,判断其正负,若为正数,则屏幕显示“+”,若为负数,则屏幕显示“-”,若为0,则屏幕显示“0”。
老师的方法:
DATDB10
CMPDAT,0
JGEDY
-'
DY:
JEEEQ
几点注意事项:
一、2号中断的前两句无先后顺序且3句话可分开写,不一定要写在一起。
二、标号不具有跳转能力。
三、程序中的地址是逻辑地址而非实际地址。
故有数据段的时候,装入DS的方式必须有,这是找段基址要求的,否则程序在编译时有偏移量,找不到段基址出现错误。
四、程序是顺序执行的。
+'
EEQ:
0'
例19:
ADDR中有Y的地址,在Y中统计“1”的个数放入COUNT中
NUMBERDW123111
CODESEGMRNT
MOVBX,ADDR//Y的地址给AX
符号函数:
>
0输出+<
0输出-求极值统计个数芯片上8255信号灯8253通道0计数100次
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 实例