华南理工大学物流工程汇编语言实验报告.docx

上传人:b****5 文档编号:8600720 上传时间:2023-02-01 格式:DOCX 页数:15 大小:17.81KB
下载 相关 举报
华南理工大学物流工程汇编语言实验报告.docx_第1页
第1页 / 共15页
华南理工大学物流工程汇编语言实验报告.docx_第2页
第2页 / 共15页
华南理工大学物流工程汇编语言实验报告.docx_第3页
第3页 / 共15页
华南理工大学物流工程汇编语言实验报告.docx_第4页
第4页 / 共15页
华南理工大学物流工程汇编语言实验报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

华南理工大学物流工程汇编语言实验报告.docx

《华南理工大学物流工程汇编语言实验报告.docx》由会员分享,可在线阅读,更多相关《华南理工大学物流工程汇编语言实验报告.docx(15页珍藏版)》请在冰豆网上搜索。

华南理工大学物流工程汇编语言实验报告.docx

华南理工大学物流工程汇编语言实验报告

华南理工大学

《计算机原理与汇编语言》课程实验报告

姓名:

学号:

班级:

物流工程

(2)班组别:

合作者:

指导教师:

实验题目1:

先让用户输入一个字符串,再让用户输入一个字母。

输出这个字母在该字符串中出现的次数,再输出首次出现的位置(下标,首个字符的下标为0)。

实验概述

【实验目的及要求】

实验目的:

熟悉数组的使用,数组的遍历与数组单元的比较与统计。

实验要求:

提示用户输入字符串,再提示用户输入一个字符,统计在之前输入的字符串中该字符出现次数和第一次出现的位置。

【实验环境】

操作系统:

WindowsXP

实验内容

【程序源代码及注释】

CODESSEGMENT

ASSUMECS:

CODES

ORG100H

START:

JMPBEGIN

MSG1DB'pleaseinputastring:

','$'

MSG2DB'pleaseinputachar:

','$'

LFCRDB13,10,'$'

STRING1DB255,?

255DUP(?

CHAR1DB?

COUNTDB0

POSDB0

BEGIN:

PUSHCS

POPDS

PUSHCS

POPES

LEADX,MSG1

MOVAH,9

INT21H

LEADX,STRING1

MOVAH,10

INT21H

LEADX,LFCR

MOVAH,9

INT21H

LEADX,MSG2

INT21H

MOVAH,1

INT21H

MOVCHAR1,AL

LEADX,LFCR

MOVAH,9

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

JNEB

MOVPOS,BL

B:

LOOPA

MOVDL,COUNT

ADDDL,30H

MOVAH,2

INT21H

MOVDL,''

INT21H

MOVDL,POS

ADDDL,30H

INT21H

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?

pdw0000h

rdw000ah

qdw0000h

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:

popax

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

实验内容

【程序源代码及注释】

datasegment

tendw10

bufdb20dup(?

dataends

stacksegmentparastack

dw50dup(?

stackends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

callinputint

movdl,0dh

movah,02h

int21h

movdl,0ah

movah,02h

int21h

callbinout

movdl,0dh

movah,02h

int21h

movdl,0ah

movah,02h

int21h

callprintint

movdl,0dh

movah,02h

int21h

movdl,0ah

movah,02h

int21h

callhexout

movah,4ch

int21h

binoutproc

pushcx

pushbx

pushdx

pushax

movcx,16

a3:

shlbx,1

jca1

movdl,'0'

jmpa2

a1:

movdl,'1'

a2:

movah,02h

int21h

loopa3

popax

popdx

popbx

popcx

ret

binoutendp

inputintprocnear;

pushcx

pushax

pushdx

pushf

movbx,0

movcx,0

ll2:

movah,01h

int21h

cmpal,'0'

jllL1

cmpal,'9'

jalL1

subal,'0'

movcl,al

movax,bx

multen

addax,cx

movbx,ax

jmpll2

ll1:

popf

popdx

popax

popcx

ret

inputintendp

printintprocnear;

pushsi

pushax

pushdx

pushcx

pushf

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

int21h

loopl3

popf

popcx

popdx

popax

popsi

ret

printintendp

hexoutproc

pushcx

pushbx

pushdx

pushax

movax,bx

MOVBX,16;16进制,要除16

MOVCX,4;求4位16进制数.

ABC:

CWD;将AX扩展到DX

DIVBX

PUSHDX;保存余数到堆栈.

LOOPABC

MOVCX,4;显示4位.

ASD:

POPDX

CMPDL,10

JBA48

ADDDL,7

A48:

ADDDL,48

MOVAH,2

INT21H;输出.

LOOPASD

popax

popdx

popbx

popcx

ret

hexoutendp

codeends

endstart

小结

编写三个子程序,除以进制,取余输出。

在主程序中使用call调用函数。

指导教师评语及成绩

评语:

 

成绩:

          指导教师签名:

                                              批阅日期:

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

当前位置:首页 > 高等教育 > 工学

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

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