本文共 2989 字,大约阅读时间需要 9 分钟。
一、实验要求
二、实验内容
1.设置堆栈段存储数据,利用loop循环,使用单个字符输出的形式输出Hello world!
步骤要求:源程序:
stack segment sto db 'Hello world' num dw $-stostack endscode segmentassume cs:code,ss:stackstart: mov ax,stack mov ss,ax mov sp,0 mov cx,num s: pop ax mov dx,ax mov ah,2h int 21h mov dl,dh mov ah,2h int 21h loop s mov ax,4c00h int 21hcode endsend start
堆栈中存放的字符(截图):
2.设置堆栈段存储数据。在堆栈中存储十进制字型数据:48,49,50,51,52,53,54,55,56,57;使用loop循环,将这些数据分别出栈到寄存器DX中,使用INT 21H指令,将这些数据分别输出。若程序出错,请加大堆栈空间的大小。debug程序生成的exe文件。思考(不用作答):堆栈的起始物理地址是?你规划的堆栈的大小是?初始状态堆栈栈顶的物理地址是?出栈结束后,堆栈的栈顶物理地址是?代码的起始物理地址是?
源程序:stack segment sto dw 48,49,50,51,52,53,54,55,56,57stack endscode segmentassume cs:code,ss:stackstart: mov ax,stack mov ss,ax mov sp,offset sto mov cx,10 s: pop dx mov ah,2h int 21h loop s mov ax,4c00h int 21hcode endsend start
堆栈中存放的字符(截图):
d ss:03.阅读课本187页“根据材料编程”。在dosbox下,显示三行自己的名字和籍贯拼音,每行颜色不同,第三行字体闪烁。
步骤要求:
源程序:
data segment str db 'chenbinbin',20h,'hunanshenghengyangshi',20h num dw $data endscode segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov ax,0b800h mov es,ax ;显示缓冲区设置为附加段;****************************************************** mov si,0 mov di,140h ;第3行 mov cx,num mov ah,01101101b ;高字节黄底粉红色s1: mov al,ds:[si] ;低字节字符ASCII码 mov es:[di],ax ;送入显示缓冲区 inc si inc di inc di loop s1;*********************************************************** mov si,0 mov di,1e0h ;第4行 mov cx,num mov ah,01110001b ;高字节 白底蓝色s2: mov al,ds:[si] ;低字节字符ASCII码 mov es:[di],ax ;送入显示缓冲区 inc si inc di inc di loop s2;*********************************************************** mov si,0 mov di,280h ;第5行 mov cx,num mov ah,11000010b ;高字节红底闪烁绿色s3: mov al,ds:[si] ;低字节字符ASCII码 mov es:[di],ax ;送入显示缓冲区 inc si inc di inc di loop s3;*********************************************************** mov ax,4c00h int 21hcode endsend start
结果(截图。截图不能显示闪烁效果):
【至此,汇编语言的实验已经结束了,以后就是计算机组成原理的实验啦~今天吃了火锅,开森!(^▽ ^)】
“人都是从一开始相信全都是真的,慢慢开始觉得全都是假的,然后发现有真有假,最后无谓真假”
转载地址:http://eycki.baihongyu.com/