华南理工大学物流工程汇编语言实验报告Word文档格式.docx
《华南理工大学物流工程汇编语言实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《华南理工大学物流工程汇编语言实验报告Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
'
'
$'
MSG2DB'
pleaseinputachar:
LFCRDB13,10,'
STRING1DB255,?
255DUP(?
)
CHAR1DB?
COUNTDB0
POSDB0
BEGIN:
PUSHCS
POPDS
POPES
LEADX,MSG1
MOVAH,9
INT21H
LEADX,STRING1
MOVAH,10
LEADX,LFCR
LEADX,MSG2
MOVAH,1
MOVCHAR1,AL
INT21H
MOVCL,STRING1+1
MOVCH,0
LEASI,STRING1+2
MOVBYTEPTRCOUNT,0
MOVBYTEPTRPOS,0
MOVBL,0
CLD
A:
LODSB
INCBL
CMPAL,CHAR1
JNEB
INCBYTEPTRCOUNT
CMPBYTEPTRCOUNT,1
MOVPOS,BL
B:
LOOPA
MOVDL,COUNT
ADDDL,30H
MOVAH,2
MOVDL,'
MOVDL,POS
MOVAH,4CH
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
a'
在Z(41HH)和a(61H)之间的出错
z'
JBEPRINT2;
在a,z之间的输出PRINT2
JMPERROR
PRINT1:
MOVDL,AL
MOVAH,02H
JMPAGAIN;
循环输入,AGAIN
PRINT2:
SUBDL,20H
ERROR:
MOVDX,OFFSETSTRING
MOVAH,09H
JMPAGAIN;
NEXT:
MOVAH,4CH
输入字符,判断字符的ASCII码,从低向高,比较字符。
小于A,A-Z,Z-a,a-z,大于z。
分别输出对应的字符。
实验题目3:
从键盘接收用户输入的一个正整数(0-32767之间),输出该数字的所有因子。
熟悉汇编语言中各种命令的使用。
用户从键盘输入一个0-32767之间的正整数,程序输出该数字的所有因子。
stacksegmentparastack
dw40hdup(?
)
stackends
datasegment
stringdb'
请输入一个整数,按回车键结束'
xdw0000h
ydb01h
zdb?
pdw0000h
rdw000ah
qdw0000h
dataends
codesegment
assumeds:
data,cs:
code
start:
movq,sp
movdx,offsetstring
movah,09h
int21h
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:
movdx,0000h
pushdx
cmpax0000h
jglist3
list4:
addal,30h
movdl,al
movah,02h
jllist4
moval,20h
list5:
addp,0001h
jmplist2
exit:
movax,4c00h
codeends
endstart
实验题目4:
编写主程序,调用input接收用户输入数据,再调用binout、decout、hexout将数据以二、十、十六进制输出显示。
熟悉汇编语言中函数的编写,函数的调用。
以及堆栈的使用。
编写三个函数:
1、函数input:
接收用户一个正整数,将数据保存到AX
2、函数binout:
将AX中的数据以二进制在屏幕上显示出来
3、函数decout:
将AX中的数据以十进制在屏幕上显示出来
4、函数hexout:
将AX中的数据以十六进制在屏幕上显示出来
编写主程序,调用input接收用户输入数据,再调用binout、decout、hexout将数据以二、十、十六进制输出显示。
tendw10
bufdb20dup(?
dw50dup(?
assumecs:
code,ds:
data
movax,data
movds,ax
callinputint
movdl,0dh
movdl,0ah
callbinout
callprintint
callhexout
movah,4ch
binoutproc
pushcx
pushbx
pushax
movcx,16
a3:
shlbx,1
jca1
movdl,'
jmpa2
a1:
movdl,'
1'
a2:
movah,02h
loopa3
popax
popdx
popbx
popcx
ret
binoutendp
inputintprocnear;
pushf
movbx,0
movcx,0
ll2:
movah,01h
cmpal,'
jllL1
9'
jalL1
subal,'
movcl,al
movax,bx
multen
addax,cx
movbx,ax
jmpll2
ll1:
popf
inputintendp
printintprocnear;
pushsi
movsi,0
movax,bx
l2:
cwd
divten
movbuf[si],dl
incsi
cmpax,0
jeL1
jmpl2
l1:
movcx,si
l3:
decsi
movdl,buf[si]
adddl,30h
movah,2
loopl3
popsi
printintendp
hexoutproc
MOVBX,16;
16进制,要除16
MOVCX,4;
求4位16进制数.
ABC:
CWD;
将AX扩展到DX
DIVBX
PUSHDX;
保存余数到堆栈.
LOOPABC
显示4位.
ASD:
POPDX
CMPDL,10
JBA48
ADDDL,7
A48:
ADDDL,48
MOVAH,2
INT21H;
输出.
LOOPASD
hexoutendp
codeends
编写三个子程序,除以进制,取余输出。
在主程序中使用call调用函数。
指导教师评语及成绩
评语:
成绩:
指导教师签名:
批阅日期: