汇编语言-实验9

一、实验要求

  • 1.请独立完成作业。(可偷看别人的程序,但不能复制粘贴)
  • 2.请使用debug调试程序,这样不但可以查看运行结果,还能检查程序问题。
  • 3.思考题需要作答。

二、实验内容

1.编写程序实现:在代码段中设置堆栈;从键盘输入一个小写字母,入栈;将其转换成大写字母后再次入栈(不能覆盖之前存储的小写字母);将大写字母输出。思考:debug调试程序,堆栈段的起始物理地址和结束物理地址分别是多少,代码段的起始物理地址是多少?思考(不必作答):debug调试程序,初始状态,堆栈的内容是什么?若你能去1机房,可在机房尝试运行你的程序,看看是否崩溃,并思考为什么

  • 提示:字母存储占据多大空间?入栈的数据有多大?
  • 在这里插入图片描述

源程序:

code segment 
assume  cs:code
             da dw 100 dup(?)
start:  
                mov  bx, offset  da
                add bx,200
	mov ax,cs
                mov ss,ax
                mov sp,bx

                mov ah,1
                int 21h

                sub dx,dx
                mov dl,al
                push dx

                and dl,11011111b
                push dx

                mov ah,2
                int 21h

                mov ax,4c00h
                int 21h
code ends
end start

堆栈中存放的字符(截图):
在这里插入图片描述
2.在代码段中设置堆栈。在代码段中开辟堆栈,存储十进制字型数据:48,49,50,51,52,53,54,55,56,57;使用loop循环,将这些数据分别出栈到寄存器DX中,使用INT 21H指令,将这些数据分别输出。若程序出错,请加大堆栈空间的大小。debug程序生成的exe文件。思考:堆栈的起始物理地址是?你规划的堆栈的大小是?初始状态堆栈栈顶的物理地址是?出栈结束后,堆栈的栈顶物理地址是?代码的起始物理地址是?

源程序:

code segment 
assume  cs:code
             da db 100 dup(?)
             sto dw 48,49,50,51,52
                   dw 53,54,55,56,57
start:  
	mov ax,cs
                mov ss,ax
                mov sp,offset sto

                mov cx,10
s:
                pop dx
                mov ah,2
                int 21h
                loop s

                mov ax,4c00h
                int 21h
code ends
end start

堆栈中存放的字符(截图):
在这里插入图片描述
3.设置数据段存储数据,利用loop循环,使用单个字符输出的形式输出Hello world!
步骤要求:

①设置数据段,存储字符串Hello world!和十进制数值13,10,36。
②在代码段中使用loop循环,利用ah为2的系统功能调用(int 21h),将数据段中所有数据当作ASCII码输出。

源程序:

data segment
             da db 'hello world',13,10,36
             sto dw $-da
data ends
code segment 
assume  cs:code,ds:data
             
start:  
	mov ax,data
                mov ds,ax

                mov bx,offset da
                mov ah,2
                mov cx,sto
s:
                mov dl,[bx]
                inc bx
                int 21h
                loop s

                mov ax,4c00h
                int 21h
code ends
end start

在这里插入图片描述

4.在代码段中存储字符串Hello world!并输出。
步骤要求:
①在代码段中存储字符串Hello world!和十进制数值13,10,36。
②利用ah为9的系统功能调用(int 21h),将代码段中预先存放的字符串输出。

在这里插入图片描述
源程序:

code segment 
assume  cs:code
            da db 'hello world',13,10,36
            sto dw $-da            
start:  
	mov ax,cs
                mov ds,ax

                mov dx,offset da
                mov ah,9
                int 21h

                mov ax,4c00h
                int 21h
code ends
end start

在这里插入图片描述

【一大早上起来发现自己两个科目的作业没交,早起惊魂,马上写完交了,/(ㄒoㄒ)/~~】
句子君:

看过一则新闻。一位96岁的奶奶在路边卖菜馍,有人问她,这么大年龄怎么还出来摆摊?她说:“一天到晚吃饱坐饿、打牌打麻将,我觉得那不是个事儿,对自己身体不好,对下一代的影响也不好。”谈到自己快乐的原因,奶奶说:“不高兴的事还是少想,哭哭啼啼也是一天,哈哈大笑也是一天。”

一个人有什么样的心态,就决定了他会过什么样的生活。心态好,即使暂时身处逆境,日子照样过得有希望。很多时候的痛苦纠结,不过是自己放不下;很多夜里的辗转反侧,不过是自己没想通。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少年游四方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值