华南理工大学流工程汇编语言实验报告Word下载.docx
《华南理工大学流工程汇编语言实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《华南理工大学流工程汇编语言实验报告Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
MSG2DB'
pleaseinputachar:
LFCR
DB
13,10,'
STRING1
255,?
255DUP⑺
CHAR1
?
COUNT
DB0
POS
BEGIN:
PUSH
CS
POP
DS
ES
LEA
DX,MSG1
MOV
AH,9
INT
21H
DX,STRING1
AH,10
DX,LFCR
DX,MSG2
AH,1
CHAR1,AL
CL,STRING1+1
CH,0
SI,STRING1+2
BYTEPTRCOUNT,0
BYTEPTRPOS,0
BL,0
CLD
A:
LODSB
INC
BL
CMP
AL,CHAR1
JNE
B
BYTEPTRCOUNT
BYTEPTRCOUNT,1
POS,BL
B:
LOOP
A
DL,COUNT
ADD
DL,30H
AH,2
DL,'
'
DL,POS
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
小结
遍历数组,将数组元素和查找的字符进行比较,记录第一次出现时的下标。
记录遍历完数组
后,查找的赐福出现的次数。
实验题目2:
循环接收用户按键输入,将用户输入的大字母原样输出,将用户输入的小写字母转换为大写字母再输出,用户若输入数字0则退出程序,其它情况输出“error!
”。
熟悉汇编语言的输入输出,以及ASCLL码的使用
输入A-Z,相应输出A-Z
输入a-z,相应输出A-Z
输入其他,返回error!
输入0,退出程序。
DATASSEGMENT
STRINGDB'
ERROR$
XDB?
;
DATASENDS
STACKSSEGMENT
DW128DUP⑺;
STACKSENDS
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
AGAIN:
MOVAH,01H
CMPAL,'
0'
JENEXT
A'
JBERROR;
小于A的岀错
Z'
JBEPRINT1
在A,Z之间的输岀PRINT1
JBERROR
在Z(41HH)和A(61H)之间的岀错
JBEPRINT2
在A,Z之间的输岀PRINT2
JMPERROR
PRINT1:
MOVDL,AL
MOVAH,02H
JMPAGAIN
循环输入,AGAIN
PRINT2:
SUBDL,20H
ERROR:
MOVDX,OFFSETSTRING
MOVAH,09H
JMPAGAIN;
NEXT:
输入字符,判断字符的ASCII码,从低向高,比较字符。
小于A,A-Z,Z-a,a-z,大于z。
分别输出对应的字符。
实验题目3:
从键盘接收用户输入的一个正整数(0-32767之间),输出该数字的所有因子。
熟悉汇编语言中各种命令的使用。
用户从键盘输入一个0-32767之间的正整数,程序输出该数字的所有因子。
STACKSEGMENTPARASTACK
DW40HDUP⑺
STACKENDS
DATASEGMENT
请输入一个整数,按回车键结束'
XDW0000H
YDB01H
ZDB?
PDWOOOOH
RDW000AH
QDWOOOOH
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
MOVQ,SP
NEWCHAR:
MOVAH,1
CMPAL,0DH
JZLIST1
MOVAH,00H
PUSHAX
JMPNEWCHAR
LIST1:
POPAX
MOVBL,Y
MOVZ,BL
SUBAL,30H
QUAN:
MULR
SUBZ,01H
CMPZ,00H
JGQUAN
DIVR
ADDX,AX
ADDY,01H
CMPSP,Q
JLLIST1
LIST2:
MOVAX,X
CMPP,AX
JGEXIT
MOVDX,0000H
MOVP,0001H
DIVP
CMPDX,0000H
JGLIST5
MOVAX,P
LIST3:
PUSHDX
CMPAX0000H
JGLIST3
LIST4:
P0PAX
ADDAL,30H
JLLIST4
MOVAL,20H
LIST5:
ADDP,0001H
JMPLIST2
EXIT:
MOVAX,4C00H
CODEENDS
实验题目4:
编写主程序,调用input接收用户输入数据,再调用binout、decout、hexout将数据以二、十、十六进制输出显示。
熟悉汇编语言中函数的编写,函数的调用。
以及堆栈的使用。
编写三个函数:
1、函数input:
接收用户一个正整数,将数据保存到AX
2、函数binout:
将AX中的数据以二进制在屏幕上显示出来
3、函数decout:
将AX中的数据以十进制在屏幕上显示出来
4、函数hexout:
将AX中的数据以十六进制在屏幕上显示出来
编写主程序,调用input接收用户输入数据,再调用binout、decout、hexout将数据以
二、十、十六进制输出显示。
data
segment
ten
dw
10
buf
db
20dup(?
)
ends
stacksegmentparastackdw50dup(?
stackends
codesegment
assumecs:
code,ds:
datastart:
mov
ax,data
ds,ax
callinputint
dl,Odh
ah,02h
int
21h
dl,Oah
callbinout
callprintint
dl,0dh
movdl,Oah
callhexout
ah,4ch
binout
proc
push
cx
bx
dx
ax
cx,16
a3:
shl
bx,1
jc
a1
dl,'
jmp
a2
a1:
1'
a2:
loopa3
popax
popdx
popbx
popex
ret
binoutendp
inputintproenear
pushex
pushax
pushdxpushf
movbx,0
movex,0
ll2:
movah,01h
int21h
empal,'
jllL1
empal,9
jalL1
subal,'
O'
movcl,almovax,bxmultenaddax,cxmovbx,axjmpll2ll1:
popf
popdxpopaxpopcxret
inputintendpprintintprocnear
pushsi
pushaxpushdxpushcxpushf
movsi,0movax,bx
12:
cwd
divten
movbuf[si],dlincsi
cmpax,0
jeL1
jmp12
11:
movcx,si
13:
decsi
movdl,buf[si]adddl,30hmovah,2int21h
loopl3
popcx
popsi
printint
endp
hexout
movi
ax,bx
BX,16
;
16进制,要除16
CX,4
求4位16进制数.
ABC:
CWD
将AX扩展到DX
DIV
BX
保存余数到堆栈.
LOOPABC
显示4位.
ASD:
DX
DL,10
JB
A48
DL,7
A48:
ADDDL,48
MOVAH,2
INT21H;
输出.
LOOPASD
hexoutendp
codeends
endstart
编写三个子程序,除以进制,取余输出。
在主程序中使用call调用函数。
指导教师评语及成绩
评语:
成绩:
指导教师签名:
批阅日期:
单纯的课本容,并不能满足学生的需要,通过补充,达到容的完善
教育之通病是教用脑的人不用手,不教用手的人用脑,所以一无所能。
教育革命的对策是手脑联盟,结果是手与脑的力量都可以大到不可思议。