做过的汇编程序1121107黄志强.docx
- 文档编号:28957716
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:17
- 大小:17.56KB
做过的汇编程序1121107黄志强.docx
《做过的汇编程序1121107黄志强.docx》由会员分享,可在线阅读,更多相关《做过的汇编程序1121107黄志强.docx(17页珍藏版)》请在冰豆网上搜索。
做过的汇编程序1121107黄志强
程序1将BX和DX中较大的一个无符号放到AX中
.MODELTINY
.CODE
TITLE将BX和DX中较大的一个无符号放到AX中
;CODESEGMENT
;ASSUMECS:
CODE
START:
MOVBX,1000;十进制数
MOVDX,765H;十六进制
CMPBX,DX;相减
JALAB3;Bx>dx,turntolab3
MOVAX,DX;
JMPLAB4
LAB3:
MOVAX,BX
LAB4:
MOVAH,4CH
INT21H
;CODEENDS
ENDSTART
程序2
DATASEGMENT
VARXDB06H
VARYDB07H
RESULTDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDL,VARX;籇L<-X
ADDDL,VARY;籇L<-X+Y
MOVCL,3
SALDL,CL;籇L<-(X+Y)*8
SUBDL,VARX;DL<-(X+Y)*8-X
SARDL,1;DL<-((X+Y)*8-X)/2
MOVRESULT,DL
MOVAL,DL
ANDDL,0F0H
MOVCL,4
SHRDL,CL
ADDDL,30H;dl的高四位加3
MOVAH,02H
INT21H;displaydl33
MOVDL,RESULT;al保存到dl
ANDDL,0FH;留取dl的低四位
ADDDL,30H;dl的高四位加上3
MOVAH,02H
INT21H
MOVAH,4CH
INT21H;退出程序
CODEENDS
ENDSTART
程序3在屏幕上显示‘n'
CODESEGMENT
ASSUMECS:
CODE
MAIN:
MOVDL,'n'
MOVAH,2H
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDMAIN
一个类似的:
CODESEGMENT
ASSUMECS:
CODE
MAIN:
MOVAH,2
MOVDL,'A'
INT21H
INT3H
MOVAH,4CH
INT21H;returntodos
CODEENDS
ENDMAIN
程序4
DATASEGMENT
NUM1DB45H
NUM2DB0AEH
DA1DB?
DA2DB?
DATAENDS
STAK1SEGMENTPARASTACK
DW20HDUP(0)
STAK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STAK1
BEGINE:
MOVAX,DATA
MOVDS,AX
MOVAL,NUM1
MOVAH,NUM2
TESTAL,0H
JNEEND0
TESTAH,01
JNEL1
INCAL
INCAH
JMPEND0
L1:
XCHGAH,AL
END0:
MOVDA1,AL
MOVDA2,AH
MOVAH,4CH
INT21H
CODEENDS
ENDBEGINE
程序5
STACK_SEGSEGMENTSTACK;定义堆栈段
STACK_BUFDW120DUP(?
);堆栈段缓冲区变量预留120个字单位
TOPEQU$-STACK_BUF;?
这个是什么意思啊?
STACK_SEGENDS;堆栈段的终点
DATA_SEGSEGMENTPARA;定义数据段
TABLE1DB9*9DUP(0);定义一个字节变量,并填充其后的9*9个字节的空间为0
MUL1DB8;定义字节变量MUL1,并赋值为8
MUL2DB9;定义字节变量MUL1,并赋值为9
RESULTDB?
;定义字节变量RESULT
DATA_SEGENDS;数据段的终点
CODE_SEGSEGMENTPARA;定义代码段
MAINPROCFAR
ASSUMECS:
CODE_SEG,DS:
DATA_SEG
ASSUMESS:
STACK_SEG;?
START:
;代码段开始
MOVAX,STACK_SEG
MOVSS,AX;将堆栈的地址赋予给SS
MOVSP,TOP
MOVAX,DATA_SEG
MOVDS,AX
LEADI,TABLE1
MOVBH,0
MOVCX,9
LOP1:
PUSHCX
INCBH
MOVBL,0
MOVCX,9
LOP2:
INCBL
MOVAL,BH
MULBL
MOV[DI],AL
INCDI
LOOPLOP2
POPCX
LOOPLOP1
LEABX,TABLE1
XORAH,AH
MOVDL,MUL1
DECDL
MOVAL,9
MOVCL,DL
MULCL
ADDBX,AX
MOVDL,MUL2
DECDL
ADDBL,DL
MOVAL,[BX]
MOVRESULT,AL
MOVAX,4C00H
INT21H
MAINENDP
CODE_SEGENDS;代码段结束
ENDSTART
程序6function
TITLEEXAMPLEPROGRAM
DATASEGMENT
VARXDW123H
VARYDW456H
VARZDW789H
FUNDW?
DATAENDS
STACK1SEGMENTPARASTACK
DW20HDUP(0)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK1
START:
MOVAX,DATA
MOVDS,AX
MOVAX,VARX
ADDAX,VARY
MOVBX,AX
SALAX,1
SALAX,1
ADDAX,BX
SALAX,1
MOVBX,VARZ
DECBX
MOVCX,BX
SALBX,1
ADDBX,CX
SUBAX,BX
SARAX,1
MOVFUN,AX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
程序7judgeandswitch
DATASEGMENT
NUM1DB45H
NUM2DB0AEH
DA1DB?
DA2DB?
DATAENDS
STAK1SEGMENTPARASTACK
DW20HDUP(0)
STAK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STAK1
BEGINE:
MOVAX,TATA
MOVDS,AX
MOVAL,NUM1
MOVAH,NUM2
TESTAL,01
JNEEND0
TESTAH,01
JNEL1
INCAL
INCAH
JMPEND0
L1:
XCHGAH,AL
END0:
MOVDA1,AL
MOVDA2,AH
MOVAH,4CH
INT21H
CODEENDS
ENDBEGINE
程序8showinput
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,1
INT21H;读入一个字符存入al
CMPAL,0DH;AL与0D“回车的癮sk码”作比较
JZDONE;如果相等,就跳转到done行结束程序
CMPAL,30H
JBNEXT;如果小于30H,也就是比0的askI码就跳转到next行
CMPAL,39H;如果
JACHARUP
MOVDL,4EH
MOVAH,2
INT21H
JMPSTART
CHARUP:
CMPAL,41H
JBNEXT
CMPAL,5AH
JACHARDN
DISPC:
MOVDL,43H
MOVAH,2
INT21H
NEXT:
JMPSTART
CHARDN:
CMPAL,61H
JBNEXT
CMPAL,7AH
JANEXT
JMPDISPC
DONE:
MOVAH,4CH
INT21H
CODEENDS
ENDS
ENDSTART
程序9判断xx的正负ifxx==0doyy=0;if(xx>0)yy=1;
;
DATASEGMENT
XXDB12H;定义变量xx为21h
YYDB?
;defineyy=?
DATAENDS;datasegmentendshere
CODESEGMENT;codesegmentstart
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX;initialiseds
CMPXX,0;if(xx==0)
JEZERO
JNSBIG;if(x>0)
MOVBL,0FFH;if(x<0)bl=-1
JMPEND1
ZERO:
MOVBL,0;put0intobl
JMPEND1
BIG:
MOVBL,1;put1tobl
END1:
MOVYY,BL;if(xx==0)bl=0,yy=bl=0;if(xx>0)bl=1;yy=bl=1if(xx<0)bl=-1;yy=bl=-1
MOVAH,4CH
INT21;programendshereifxx==0doyy=0;if(xx>0)yy=1;
CODEENDS
ENDSTART
程序10simpleshow
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,1
INT21H
CMPAL,0DH
JZDONE
CMPAL,30H
JBNEXT
CMPAL,39H
JACHARUP
MOVDL,4EH
MOVAH,2
INT21H
JMPSTART
CHARUP:
CMPAL,41H
JBNEXT
CMPAL,5AH
JACHARDN
DISPC:
MOVDL,43H
MOVAH,2
INT21H
NEXT:
JMPSTART
CHARDN:
CMPAL,61H
JBNEXT
CMPAL,7AH
JANEXT
JMPDISPC
DONE:
MOVAH,4CH
INT21H
CODEENDS
ENDS
ENDSTART
程序11SS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVBL,30H
FOLLOW:
MOVAL,BL
INCBL
CMPBL,3AH
JASTART
MOVDL,AL
MOVAH,02H
INT21H
MOVDL,2CH
MOVAH,02H
INT21H
MOVCX,0FFFFH
WAITINT:
LOOPWAITINT
JMPFOLLOW
CODEENDS
ENDSTART
程序12taotao显示123456789?
CODESEGMENT
ASSUMECS:
CODE;指派
START:
MOVBL,30H;标号
FOLLOW:
MOVAL,BL;30H传送给AL
INCBL;BL加1,等于31H
CMPBL,3AH;比较31H-3AH
JASTART;JA高于
MOVDL,AL;DL=30H,是'0'的asc码
MOVAH,02H
INT21H;中断调用,H不能省
MOVDL,2CH;2CH是,的ASC码
MOVAH,02H
INT21H;显示dl中的内容
MOVCX,0FFFFH;重复次数
WAITING:
LOOPWAITING;延时
JMPFOLLOW
CODEENDS
ENDSTART
;单段程序
程序13计算加显示3E
DATASEGMENT
VARXDB06H
VARYDB07H
RESULTDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX;DS初始化为data段的地址
MOVDL,VARX;VARX<-X
ADDDL,VARY;VARY<-X+Y
MOVCL,3;CL=3
SALDL,CL;DL<-(X+Y)*8
SUBDL,VARX;DL<-(X+Y)*8-X
SARDL,1;DL<-((X+Y)*8-X)/2
MOVRESULT,DL;RESULT=DL=((X+Y)*8-X)/2
MOVAL,DL;AL=DL=((X+Y)*8-X)/2=48=30H
ANDDL,0F0H;取得DL=3的高四位
MOVCL,4;CL=4
SHRDL,CL;DL的向右移动四位,取得高四位
ADDDL,30H;dl的高四位加3
;MOVAH,02H
;INT21H;displaydl33
MOVDL,RESULT;al保存到dl
ANDDL,0FH;留取dl的低四位
ADDDL,30H;dl的高四位加上3
;显示部分
MOVAL,3EH
MOVBL,AL
MOVDL,AL;BLDL中都是3EH
MOVCL,4
SHRDL,CL;DL存储的内容右移四位,DL=03H
CMPDL,9
JBENEXT1;如果小于等于9就跳转到NEXT1一行,但是DL=3
ADDDL,7;DL中的内容为E+7=21H
NEXT1:
ADDDL,30H;DL为03H+30H得到33H
MOVAH,2
INT21H;显示DL的内容,显示3
MOVDL,BL;将BL中的内容赋予到DL中,DL=3EH
ANDDL,0FH;DL剩下低四位DL=0EH
CMPDL,9
JBENEXT2
ADDDL,7;DL=DL+7=15H
NEXT2:
ADDDL,30H;DL=DL+30H=45H
MOVAH,2
INT21H;显示DL45H中的内容
MOVAH,4CH
INT21H;退出程序
CODEENDS
ENDSTART
程序14(宏指令的试用实现AX内容的乘10处理)
.MODELTINY
TITLE试用宏指令(无参)实现AX内容的乘10处理
MULTAX10MACRO
PUSHBX
SALAX,1
MOVBX,AX
SALAX,1
SALAX,1
ADDAX,BX
POPBX
ENDM
.CODE
START:
MOVBX,0001;十进制数
MULTAX10
LAB4:
MOVAH,4CH
INT21H
;CODEENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编程序 1121107 黄志强