实验程序题解_第1页
实验程序题解_第2页
实验程序题解_第3页
实验程序题解_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、以下内容输入 DOS 中的 EDIT 然后另存为 test1.asm用 DOS6 工具 masm ,在 DOS 命令提示符下输入 masm test1.asm 然后用 DOS6 工具 link 在 DOS 命令提示符下输入 link test1.obj 生成 test1.exe 文件实验一内容一( 1)在屏幕上显示字符串: What is your name?, 采用 INT 21H 的 09 号功能显示: ( 2)从键盘输入: Mynameis 自己的名字, 拼音形式, 如 Zhang Ming Zhang Ming !, 采用 INT 21H 的 0A 号输入并显示。程序 Test1.as

2、m :data segment;定义数据段变量question db What is your name?,0dh,0ah,$ ;定义变量 question 的值为字符串What is your name?,回车,换行answer db 40,?,40 dup(?) ;定义变量 answer 的值为 40 字节的空字符串data endsstack segment stack stack;数据定义结束;定义stack堆栈段,同时将堆栈指针SP初始化sap db 100h dup(?);在堆栈内定义正数开始 256 字节的重复数组段top equ length sap;长度为输入字符串的长度st

3、ack ends;定义结束code segment;数据段assume cs:code,ds:data,ss:stack ;定义CS寄存器为代码段;DS寄存器为数据段;SS为堆栈段start:mov ax,data mov ds,ax mov ax,stack mov ss,ax mov sp,top;开始:将数据段的值传给 AX 寄存器;将 AX 的值传给 DS 寄存器;将堆栈段内的值传给 AX;将AX内的值传到SS寄存器;将指针赋给 SPmov dx,offset question mov ah,09h int 21hmov dx,offset answer mov ah,0ah;将所设变

4、量Question的值传到DX寄存器;将 INT 21H 的 9号给 AH 寄存器;调用INT 21H (在显示器屏幕显示出来“ What)同上,显示一行空int 21h mov dl,0dh mov ah,2;回车int 21h mov dl,0ah mov ah,2:换行int 21hmov si,offset answer mov ch,0mov cl,si+1;赋值给 SI;赋值CX地址为从0到变量answer起始字符l1:mov dl,si+2 字符给 DL 寄存器,;循环:将变量(即键盘所输入的字符串)内下一个mov ah,02hint 21h inc si loop l1mov

5、ah,4ch int 21h code ends end start;调用 2 号功能输入键盘字符; SI 地址累加; 循环 LL;调用 4 号功能显示键盘字符;代码段结束;程序结束二、实验内容(1). 用 冒 泡 排 序 法 实 现 数 据 从 小 到 大 排 序 。 待 字 节 排 序数 据 : 12h, 4fh,5ah,78h,69h,9fh,52h,0a4h,0f8h,0b2h(2) 在屏幕上把排序后的数据按从小到大的顺序输出出来。程序 Test2.asm :data segment ;定义数据段 ,用 buffer 指令在内存缓冲区内定义出后面每 个字符buffer db 12h,

6、4fh,5ah,78h,69h,9fh,52h,0a4h,0f8h,0b2hcount equ $-offset bufferdata endsstack segment stack stack ; 定义堆栈段sap db 100h dup(?)top equ length sapstack endscode segmentassume cs:code,ds:data,ss:stackstart:mov ax,data; 将数据段的值传入 AXmov ds,ax;将AX的值传给DSmov ax,stack;将堆栈段传给 AX; 以上步骤参考程序 test1mov ss,ax;堆栈段赋值mov

7、sp,top;设堆栈指针 SPmov cx,count;将数组数值传入 CXdec cx;将CX减1,调整ex地址指针top1: mov dx,cx mov si,offset buffer;分支程序1:;将CX值传给DX; 将缓冲区内数组数值传入 SItop2: mov al,sicmp al,si+1;分支 2:将 SI 内数组第一值传给 AL;比较 SI 内数组第二值与第一值jle l1;跳进 LL 内循环执行此支程序xchg al,si+1;将 SI 内第二值与第一值交换mov si,al;将第二值再赋给第一值l1: inc si; SI 地址累加loop top2;返回分支 2 执行

8、;(以上排比执行后再进行如下)mov si,offset buffermov cx,dxloop top1mov cx,countmov si,offset buffer;display;(以上排比为重复执行分支 1);(以下语句为开始显示结果 , 分别按照从小到大的次序依次显示出来) ; 注解略。l4: mov al,si;将 SI 内值传给 ALmov dh,al;将AL值赋给DHshr al,1;归位shr al,1shr al,1 ?shr al,1 cmp al,0ahjl l2add al,07h l2: add al,30hmov dl,almov ah,2 int 21hand dh,0fh cmp dh,0ahmov dl,dh jl l3add dl,07h l3: ad

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论