深职院asm课程考试资料.docx

上传人:b****8 文档编号:29235356 上传时间:2023-07-21 格式:DOCX 页数:36 大小:20.90KB
下载 相关 举报
深职院asm课程考试资料.docx_第1页
第1页 / 共36页
深职院asm课程考试资料.docx_第2页
第2页 / 共36页
深职院asm课程考试资料.docx_第3页
第3页 / 共36页
深职院asm课程考试资料.docx_第4页
第4页 / 共36页
深职院asm课程考试资料.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

深职院asm课程考试资料.docx

《深职院asm课程考试资料.docx》由会员分享,可在线阅读,更多相关《深职院asm课程考试资料.docx(36页珍藏版)》请在冰豆网上搜索。

深职院asm课程考试资料.docx

深职院asm课程考试资料

///求负

.modelsmall

.386

.code

start:

movax,17eh

negax

movax,0

negax

.exit

endstart

//***************while循环****************

.modelsmall

.386

.datakdbbufbyte33h,38h,32h,0dh

tempword?

.stack20h

.code

start:

movax,@data

movDS,ax

pushbx

pushcx

pushdi

;

leadi,kdbbuf

movcx,10

movbx,0

;

readn:

moval,[di]

.repeat

incdi

subal,30h

pushax

movax,bx

mulcx

movbx,ax

popax

movah,0

addbx,ax

moval,[di]

.untilal<30h||al>39h

;

readend:

movtemp,bx

popdi

popcx

popbx

nop

.exit

endstart

//二进制转换ASCII

.modelsmall

.386

.data

ShuChubyte10hdup(0)

Tempword17Eh

.stack20h

.code

Start:

movax,@data

movDS,ax

;

movax,Temp

leadi,ShuChu

movcx,0

movbx,10

Loop1:

movdx,0

divbx

pushdx

inccx

orax,ax

jnzLoop1

;

Loop2:

popdx

adddl,30h

mov[di],dl

incdi

loopLoop2

;

.exit

endStart

///********显示helloword!

按回车退出********

.modelsmall

.386

.data

.stack10h

keybufbyte'h','e','l','l','o',20h,'w','o','r','d','!

'

.code

start:

movax,@data

movds,ax

leadi,keybuf

WaitInput:

moval,[di]

incdi

//显示字符

movah,06h

movdl,al

int21h

//

cmpal,'!

'

jneWaitInput

WaitInput2:

//读按键

movah,06h

movdl,0ffh

WaitInput3:

int21h

jzWaitInput3

//

movah,06h

movdl,al

int21h

cmpal,0dh

jexxx

jmpWaitInput2

xxx:

.exit

endstart

//**************声音*******************

880Hz=54B。

987.76Hz=4b7。

1046.5Hz=474。

1174.66Hz=3f7。

1318.51Hz=388。

1396.92Hz=356。

1567.98Hz=2f8。

1760Hz=2a5

.modelsmall

.386

.data

.stack10h

.code

start:

moval,0b6h

out43h,al

movcx,54bh

;//传送

moval,cl

out42h,al

moval,ch

out42h,al

;//打开扬声器

inal,61h

oral,3

out61h,al

;//延时

movecx,0fffffffh

delay:

loopddelay

;//关闭扬声器

inal,61h

andal,0fch

out61h,al

jmpstart

finished:

nop

.exit

endStart

//*******从键盘输入两个数,输出相加结果*****

.modelsmall

.386

.stack10h

.data

msg1byte'A','=',0dh

msg2byte'B','=',0dh

keybuf1byte10hdup(0)

keybuf2byte10hdup(0)

printbufbyte10hdup(0)

temp1word?

temp2word?

.code

start:

movax,@data

movds,ax

;==========显示msg1A=========

leasi,msg1

shownext:

movdl,[si]

cmpdl,0dh

jeinputdata

movah,06h

int21h

incsi

jmpshownext

;=======输入数据,显示数据,保存==

inputdata:

leadi,keybuf1

inputnext:

;输入;

movah,06h

movdl,0ffh

waitinput:

int21h

jzwaitinput

cmpal,0dh

jeinputend

;显示;

movdl,al

int21h

;保存;

mov[di],al

incdi

jmpinputnext

inputend:

mov[di],al

;========转换二进制========

leadi,keybuf1

movcx,10

movbx,0

readn:

moval,[di]

incdi

cmpal,30h

jbreadend

cmpal,39h

jareadend

subal,30h

pushax

movax,bx

mulcx

movbx,ax

popax

movah,0

addbx,ax

jmpreadn

;

readend:

movtemp1,bx

;============回车换行=========

movah,06h

movdl,0dh

int21h

movdl,0ah

int21h

;=========显示msg2B===========

leasi,msg2

shownext2:

movdl,[si]

cmpdl,0dh

jeinputdata2

movah,06h

int21h

incsi

jmpshownext2

;========输入数据,显示数据,保存=====

inputdata2:

leadi,keybuf2

inputnext2:

;输入;

movah,06h

movdl,0ffh

waitinput2:

int21h

jzwaitinput2

cmpal,0dh

jeinputend2

;显示;

movdl,al

int21h

;保存;

mov[di],al

incdi

jmpinputnext2

inputend2:

mov[di],al

;===========转换二进制===============

leadi,keybuf2

movcx,10

movbx,0

readn2:

moval,[di]

incdi

cmpal,30h

jbreadend2

cmpal,39h

jareadend2

subal,30h

pushax

movax,bx

mulcx

movbx,ax

popax

movah,0

addbx,ax

jmpreadn2

;

readend2:

movtemp2,bx

;=========回车换行==========

movah,06h

movdl,0dh

int21h

movdl,0ah

int21h

;==============相加=============

movax,temp1

movbx,temp2

addax,bx

;======二进制转十六进制========

leadi,printbuf

movcx,0

movbx,10

;

writen1:

movdx,0

divbx

pushdx

inccx

orax,ax

jnzwriten1

;

writen2:

popdx

adddl,30h

mov[di],dl

incdi

loopwriten2

movbyteptr[di],0dh

;===============显示结果

leasi,printbuf

shownext3:

movdl,[si]

cmpdl,0dh

jeJieshu

movah,06h

int21h

incsi

jmpshownext3

;

Jieshu:

nop

.exit

endStart

//******从CMOS读年月日,显示******

.modelsmall

.386

.stack10h

addrportequ70h

dataportequ71h

.data

datebyte00h,00h,00h

datebufbyte00h,00h,'-',00h,00h,'-',00h,00h,0dh

.code

start:

movax,@data

movds,ax

;=============将年月日读到date=========

movcx,3

leasi,date

inal,addrport

andal,80h

addal,9

readcoms:

outaddrport,al

;============延时==============

pushcx

movcx,0ffh

delay:

loopdelay

popcx

;============从dataport读数据到al=======

pushax

inal,dataport

mov[si],al

popax

decal

incsi

loopreadcoms

;===================将date的BCD码转为ASCII码,存入datebuf=====

movcx,3

leasi,date

leadi,datebuf

bcd2asc:

;=================BCD转ASCII=====

moval,[si]

movah,[si]

shral,4

andal,0fh

andah,0fh

addal,30h

addah,30h

mov[di],al

incdi

mov[di],ah

incsi

incdi

incdi

loopbcd2asc

;===============显示datebuf=======

leasi,datebuf

shownext:

movdl,[si]

cmpdl,0dh

jejieshu

movah,06h

int21h

incsi

jmpshownext

;=============等待按键结束========

movdl,0ffh

movah,06h

waitinput:

int21h

jzwaitinput

jieshu:

.exit

endstart

//**********连加*从1加到10======

.modelsmall

.386

.data

tempword?

.stack10h

.code

mainprocfar

movax,@data

movds,ax

movcx,10

movax,0

calllianjia

.exit

mainendp

lianjiaprocnear

addax,cx

looplianjia

movtemp,bx

ret

lianjiaendp

endmain

//*************IF语句*********

;判断键盘输入为1.2.3.4分别传送'A','B','C','D'.用高级语言

.modelsmall

.386

.stack10h

.code

start:

movax,@data

movds,ax

movdl,0ffh

movah,06h

waitinput:

int21h

jzwaitinput

.IFal=='1'

movah,'A'

.ELSEIFal=='2'

movah,'B'

.ELSEIFal=='3'

movah,'C'

.ELSEIFal=='4'

movah,'D'

.ELSE

movah,'E'

.ENDIF

.exit

endstart

//**********子程序调用IFHELLOWORD******

;子程序调用.IF.ELSEIF.ELSE.ENDIF显示shownext

.modelsmall

.386

.stack10h

.data

msg1byte'H','E','L','L','O','','W','O','R','L','D',0dh

.code

mainprocfar

movax,@data

movds,ax

leasi,msg1

callshowmsg

nop

.exit

mainendp

showmsgprocnearusessidxax

shownext:

movdl,[si]

.IFdl!

=0dh

movah,06h

int21h

incsi

jmpshownext

.ELSE

ret

.ENDIF

showmsgendp

.exit

endmain

//********.IF.ELSEIF.ELSEENDIF转换2bin

;1-8用子函数,.IF.ELSEIF.ELSE.ENDIFASCII转换2bin

.modelsmall

.386

.data

keybufbyte33h,38h,32h,0dh

tempword?

.stack30h

.code

mainprocfar

movax,@data

movds,ax

leadi,keybuf

callbin2ascii

mainendp

bin2asciiprocnearusesaxbxcx

movbx,0

movcx,10

DuShu:

moval,[di];di放入ax低8位

incdi

.IFal>=39h

movtemp,bx

ret

.ELSEIFal<=30h

movtemp,bx

ret

.ENDIF

subal,30h

pushax

movax,bx

mulcx;ax=ax*cx

movbx,ax

popax

movah,0

addbx,ax

jmpDuShu

ret

bin2asciiendp

endmain

;***************从1加到10*************

.modelsmall

.386

.data

tempword?

.stack10h

.code

start:

movax,@data

movds,ax

movcx,0

movax,0

.whilecx<=10

addax,cx

inccx

.endw

.exit

endstart

**************.break.continue*******

.modelsmall.386

.data

databufbyte13h,12h,'#',02h,'#',19h,0dh

.stack20h

.code

start:

movax,@data

movDS,ax

leadi,databuf

movbx,0

.while1

moval,[di]

incdi

.break.ifal==0dh

.continue.ifal=='#'

movah,0

addbx,ax

.endw

nop

.exit

endstart

//*********模块汇编****************

//c++

#include"stdafx.h"

#include"iostream"

usingnamespacestd;

extern"C"voiddecitohexa(int,char*);

charbuffer[35]="Enteranumberbetween0and9999:

";

charhexanum[5];

intdecinum=0;

voidmain(void)

{

cout<

cin>>decinum;

cout<

decitohexa(decinum,hexanum);

cout<<"thehexadecimalvalueof"<

cout<

cout<<"\n"<

}

//asm文件

.386

.modelflat,c

.stack1024

.code

publicdecitohexa

decitohexaproccuseseaxediecxedxdecidata,hexadata:

ptr

xoreax,eax

moveax,decidata

shleax,16

movedi,hexadata

movecx,4

next:

movedx,eax

shleax,4

roledx,4

anddl,0fh

adddl,30h

cmpdl,39h

jbestoreasc

adddl,7

storeasc:

mov[edi],dl

incedi

loopnext

movbyteptr[edi],0

ret

decitohexaendp

end

//*****************内嵌汇编**************

//xm12_4.cpp:

Definestheentrypointfortheconsoleapplication.

//

#include"stdafx.h"

#include"iostream"

usingnamespacestd;

 

charbuffer[35]="Enteranumberbetween0and9999:

";

charhexanum[5];

intdecinum=0;

voiddecitohexa(intdecidata,char*hexadata)

{

__asm

{

xoreax,eax

moveax,decidata

shleax,16

movedi,hexadata

movecx,4

next:

movedx,eax

shleax,4

roledx,4

anddl,0fh

adddl,30h

cmpdl,39h

jbestoreasc

adddl,7

storeasc:

mov[edi],dl

incedi

loopnext

movbyteptr[edi],0

}

}

voidmain(void)

{

cout<

cin>>decinum;

cout<

decitohexa(decinum,hexanum);

cout<<"thehexadecimalvalueof"<

cout<

cout<<"\n"<

}

//************模块汇编******加法************

.modelsmall

.386

.stack20h

.data

msg1byte'A','=',0dh

msg2byte'B','=',0dh

msg3byte'A','+','B','=',0dh

data1asciibyte6dup(0)

data2asciibyte6dup(0)

data1word0

data2word0

data3word0

sumbyte6dup(0)

.code

Mainprocfar

movax,@data

movds,ax

 

next:

callreturn;调用回车换行子过程

leasi,msg1

callshowmsg;调用显示信息的子过程showmsg显示“A=”

leadi,data1ascii

callinput;调用键盘输

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 卡通动漫

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1