华南理工大学流工程汇编语言实验报告.docx
- 文档编号:9007110
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:14
- 大小:19.23KB
华南理工大学流工程汇编语言实验报告.docx
《华南理工大学流工程汇编语言实验报告.docx》由会员分享,可在线阅读,更多相关《华南理工大学流工程汇编语言实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
华南理工大学流工程汇编语言实验报告
华南理工大学
《计算机原理与汇编语言》课程实验报告
姓名:
学号:
班级:
物流工程
(2)班组别:
合作者:
指导教师:
实验题目1:
先让用户输入一个字符串,再让用户输入一个字母。
输出这个
字母在该字符串中出现的次数,再输出首次出现的位置(下标,首个字符的下标为0)。
实验概述
【实验目的及要求】
实验目的:
熟悉数组的使用,数组的遍历与数组单元的比较与统计。
实验要求:
提示用户输入字符串,再提示用户输入一个字符,统计在之前输入的字符串中该
字符出现次数和第一次出现的位置。
【实验环境】
操作系统:
WindowsXP
实验容
【程序源代码及注释】
CODESSEGMENT
ASSUMECS:
CODES
ORG100H
START:
JMPBEGIN
MSG1DB'pleaseinputastring:
','$'
MSG2DB'pleaseinputachar:
','$'
LFCR
DB
13,10,'$'
STRING1
DB
255,?
255DUP⑺
CHAR1
DB
?
COUNT
DB0
POS
DB
0
BEGIN:
PUSH
CS
POP
DS
PUSH
CS
POP
ES
LEA
DX,MSG1
MOV
AH,9
INT
21H
LEA
DX,STRING1
MOV
AH,10
INT
21H
LEA
DX,LFCR
MOV
AH,9
INT
21H
LEA
DX,MSG2
INT
21H
MOV
AH,1
INT
21H
MOV
CHAR1,AL
LEA
DX,LFCR
MOV
AH,9
INT
21H
MOV
CL,STRING1+1
MOV
CH,0
LEA
SI,STRING1+2
MOV
BYTEPTRCOUNT,0
MOV
BYTEPTRPOS,0
MOV
BL,0
CLD
A:
LODSB
INC
BL
CMP
AL,CHAR1
JNE
B
INC
BYTEPTRCOUNT
CMP
BYTEPTRCOUNT,1
JNE
B
MOV
POS,BL
B:
LOOP
A
MOV
DL,COUNT
ADD
DL,30H
MOV
AH,2
INT
21H
MOV
DL,''
INT
21H
MOV
DL,POS
ADD
DL,30H
INT
21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
小结
遍历数组,将数组元素和查找的字符进行比较,记录第一次出现时的下标。
记录遍历完数组
后,查找的赐福出现的次数。
实验题目2:
循环接收用户按键输入,将用户输入的大字母原样输出,将用户输入的小写字母转换为大写字母再输出,用户若输入数字0则退出程序,其它情况输出“error!
”。
实验概述
【实验目的及要求】
实验目的:
熟悉汇编语言的输入输出,以及ASCLL码的使用
实验要求:
输入A-Z,相应输出A-Z
输入a-z,相应输出A-Z
输入其他,返回error!
输入0,退出程序。
【实验环境】
操作系统:
WindowsXP
实验容
【程序源代码及注释】
DATASSEGMENT
STRINGDB'ERROR$
XDB?
;
DATASENDS
STACKSSEGMENT
DW128DUP⑺;
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVAX,DATAS
MOVDS,AX
AGAIN:
MOVAH,01H
INT21H
CMPAL,'0'
JENEXT
CMPAL,'A'
JBERROR;小于A的岀错
CMPAL,'Z'
JBEPRINT1
;在A,Z之间的输岀PRINT1
CMPAL,'A'
JBERROR
在Z(41HH)和A(61H)之间的岀错
CMPAL,'Z'
JBEPRINT2
;在A,Z之间的输岀PRINT2
JMPERROR
PRINT1:
MOVDL,AL
MOVAH,02H
INT21H
JMPAGAIN
;循环输入,AGAIN
PRINT2:
MOVDL,AL
SUBDL,20H
MOVAH,02H
INT21H
JMPAGAIN
;循环输入,AGAIN
ERROR:
MOVDX,OFFSETSTRING
MOVAH,09H
INT21H
JMPAGAIN;
NEXT:
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
小结
输入字符,判断字符的ASCII码,从低向高,比较字符。
小于A,A-Z,Z-a,a-z,大于z。
分别输出对应的字符。
实验题目3:
从键盘接收用户输入的一个正整数(0-32767之间),输出该数字的所有因子。
实验概述
【实验目的及要求】
实验目的:
熟悉汇编语言中各种命令的使用。
实验要求:
用户从键盘输入一个0-32767之间的正整数,程序输出该数字的所有因子。
【实验环境】
操作系统:
WindowsXP
实验容
【程序源代码及注释】
STACKSEGMENTPARASTACK
DW40HDUP⑺
STACKENDS
DATASEGMENT
STRINGDB'请输入一个整数,按回车键结束'
XDW0000H
YDB01H
ZDB?
PDWOOOOH
RDW000AH
QDWOOOOH
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,CS:
CODE
START:
MOVQ,SP
MOVDX,OFFSETSTRING
MOVAH,09H
INT21H
NEWCHAR:
MOVAH,1
INT21H
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:
MOVDX,0000H
DIVR
PUSHDX
CMPAX0000H
JGLIST3
LIST4:
P0PAX
ADDAL,30H
MOVDL,AL
MOVAH,02H
INT21H
CMPSP,Q
JLLIST4
MOVAL,20H
MOVDL,AL
MOVAH,02H
INT21H
LIST5:
ADDP,0001H
JMPLIST2
EXIT:
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
小结
实验题目4:
编写主程序,调用input接收用户输入数据,再调用binout、decout、hexout将数据以二、十、十六进制输出显示。
实验概述
【实验目的及要求】
实验目的:
熟悉汇编语言中函数的编写,函数的调用。
以及堆栈的使用。
实验要求:
编写三个函数:
1、函数input:
接收用户一个正整数,将数据保存到AX
2、函数binout:
将AX中的数据以二进制在屏幕上显示出来
3、函数decout:
将AX中的数据以十进制在屏幕上显示出来
4、函数hexout:
将AX中的数据以十六进制在屏幕上显示出来
编写主程序,调用input接收用户输入数据,再调用binout、decout、hexout将数据以
二、十、十六进制输出显示。
【实验环境】
操作系统:
WindowsXP
实验容
【程序源代码及注释】
data
segment
ten
dw
10
buf
db
20dup(?
)
data
ends
stacksegmentparastackdw50dup(?
)
stackends
codesegment
assumecs:
code,ds:
datastart:
mov
ax,data
mov
ds,ax
callinputint
mov
dl,Odh
mov
ah,02h
int
21h
mov
dl,Oah
mov
ah,02h
int
21h
callbinout
mov
dl,Odh
mov
ah,02h
int
21h
mov
dl,Oah
mov
ah,02h
int
21h
callprintint
mov
dl,0dh
mov
ah,02h
int
21h
movdl,Oah
mov
ah,02h
int
21h
callhexout
mov
ah,4ch
int
21h
binout
proc
push
cx
push
bx
push
dx
push
ax
mov
cx,16
a3:
shl
bx,1
jc
a1
mov
dl,'0'
jmp
a2
a1:
mov
dl,'1'
a2:
mov
ah,02h
int
21h
loopa3
popax
popdx
popbx
popex
ret
binoutendp
inputintproenear
pushex
pushax
pushdxpushf
movbx,0
movex,0
ll2:
movah,01h
int21h
empal,'0'
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
popf
popcx
popdx
popax
popsi
ret
printint
endp
hexout
proc
push
cx
push
bx
push
dx
push
ax
movi
ax,bx
MOV
BX,16
;16进制,要除16
MOV
CX,4
;求4位16进制数.
ABC:
CWD
;将AX扩展到DX
DIV
BX
PUSHDX
;保存余数到堆栈.
LOOPABC
MOV
CX,4
;显示4位.
ASD:
POP
DX
CMP
DL,10
JB
A48
ADD
DL,7
A48:
ADDDL,48
MOVAH,2
INT21H;输出.
LOOPASD
popax
popdx
popbx
popex
ret
hexoutendp
codeends
endstart
小结
编写三个子程序,除以进制,取余输出。
在主程序中使用call调用函数。
指导教师评语及成绩
评语:
成绩:
指导教师签名:
批阅日期:
单纯的课本容,并不能满足学生的需要,通过补充,达到容的完善
教育之通病是教用脑的人不用手,不教用手的人用脑,所以一无所能。
教育革命的对策是手脑联盟,结果是手与脑的力量都可以大到不可思议。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华南理工大学 工程 汇编语言 实验 报告