微原汇编课程设计

发布 2022-10-01 07:20:28 阅读 7680

code segment;**段开始。

assume cs:code,ds:code

start: mov ax,code

mov ds,ax;装填**段。

mov ax,0b800h;寄存器首地址0b00h置入ax中。

mov es,ax

cld ;清除方向标志。

again: mov ax,3

int 10h ;读光标位置。

lea dx,menu;目标地址传送,将主菜单有效地址送入di

mov ah,9

int 21h ;9号系统功能调用,输出字符串。

input: mov ah,0

int 16h;从键盘读入字符送al寄存器。

cmp al,'1'

jnz cp2

call sub01

jmp input

cp2: cmp al,'2';比较指令。

jnz cp3 ;不为零时跳转。

call sub02 ;调用子程序,字符串左右移动。

jmp again ;转移指令,返回到主菜单。

cp3: cmp al,'3';返回dos

jnz input

lea dx,mesg;将mesg装入dx中。

mov ah,9

int 21h;9号功能调用,输出字符串。

mov ah,1

int 21h ;一号系统功能调用,键盘输入字符。

mov ah,4ch

int 21h ;4ch号调用,返回操作系统。

delay proc ;定义子程序的伪指令。

push cx ;压栈指令。

push dx ;弹出dx

mov dx,1000

d1: mov cx,0fffh

loop $

dec dx;减一指令。

jnz d1

pop dx;出栈指令。

pop cx

ret返回指令。

delay endp;表示proc所定义的子程序过程结束。

sub01: mov ax,0e0dh

int 10h;显示字符。

mov al,0ah

int 10h ;在光标处显示字符。

lea dx,str;把str首地址赋给dx

mov ah,0ah

int 21h ;十号系统功能调用,输入一个字符串。

mov ax,0e0ah

int 10h

ret;返回。

sub02: cmp str+1,2

jnb y2;不低于。

jmp quit

y2: call line ;画矩形框。

mov dl,60-2

mov al,str+1

sub dl,al

mov dh,0

mov cnt3,dx

mov bl,al

inc al ;加一指令。

shr al,1 ;逻辑右移一位。

cbw ;字节扩展指令,将al中内容扩展到ah中。

mov cnt2,ax

sub bl,al

mov bh,0

mov cnt4,bx

y3: mov bp,es

push ds

pop es ;保护ds中数据。

mov di,1000h

mov cx,cnt1

jcxz u1 ;cx内容为0时转移。

mov al,20h

rep stosb;重复存字节。

u1: lea si,buf ;取buf首地址放入si中。

mov cx,cnt2

rep movsb;从si中到di中字节传送,直到cx为0

mov cx,cnt3

jcxz u2;cx内容为0转移。

mov al,20h

rep stosb

u2: mov cx,cnt4

rep movsb

mov cx,cnt5

jcxz u3

mov al,20h

rep stosb

u3:show: mov es,bp

mov ah,70h

mov si,1000h

mov di,left

mov cx,60-2

ppp: lodsb;读字节串。

stoswloop ppp

mov ah,1

int 16h;读键盘缓冲区字节。

jnz sss ;按任意键,返回主菜单。

call delay

cmp cnt3,0

jnz kk1

here: mov al,1000h

xor byte ptr [kk1+1],al

xor byte ptr [kk1+5],al

xor byte ptr [kk1+9],al

xor byte ptr [kk2-3],al

kk1: inc cnt1

inc cnt5

dec cnt3

cmp cnt3,0

jz kk2 ;是0时执行。

dec cnt3

kk2: cmp cnt1,0

jz here

jmp y3

sss: mov str+1,0

quit: lea si,cnt1

xor ax,ax

mov cx,5

kk3: mov [si],ax

inc si

inc si

loop kk3

xor di,di

mov cx,80*25

mov ax,720h

rep stosw ;清全屏。

retline: mov di,(18*80+10)*2;矩形框。

mov al,201 ;左上角。

mov ah,4

stosw;将ax中内容存入si指向存储单元。

mov cx,60-2

mov al,205 ;横框。

rep stosw

mov al,187 ;右上角。

stoswadd di,20*2

mov al,186 ;竖框。

stoswmov left,di

mov cx,60-2

mov al,20h ;空格。

rep stosw

mov right,di

mov al,186 ;竖框。

stoswadd di,20*2

mov al,200 ;左下角。

stoswmov cx,60-2

mov al,205 ;横框。

rep stosw

mov al,188 ;右下角。

stoswrep

menu db 5 dup(0ah)

db 31 dup(' main menu$',0dh,0ah

db 25 dup(' 201,21 dup(205),187,0dh,0ah

db 25 dup(' 186,' a string ..186,0dh,0ah

db 25 dup(' 186,' model ..186,0dh,0ah

db 25 dup(' 186,' to dos ..186,0dh,0ah

db 25 dup(' 200,21 dup(205),188,0dh,0ah

db 28 dup(' choice(1,2,3):$

mesg db 0dh,0ah,0dh,0ah,9,'press any key to exit ..

cnt1 dw 0 ;前导空格长度。

cnt2 dw 0 ;左半字符串长度。

cnt3 dw 0 ;中间空格长度。

cnt4 dw 0 ;右半字符串长度。

cnt5 dw 0;末尾空格长度。

num dw 2

汇编课程设计

直流电机调速系统设计。摘要。脉宽调制的全称为 pulse widthmodulator 简称pwm 直流电机调速器就是调节直流电动机速度的设备,由于直流电动机具有低转速大力矩的特点,是交流电动机无法取代的,因此调节直流电动机速度的设备 直流调速器,由于它的特殊性能 常被用于直流负载回路中 灯具调光或...

汇编课程设计

湖南农业大学课程设计报告。学院 信息科学与技术学院班级 计算机科学与技术2班 姓名 陈小湾学号 200841842226 课程设计报告题目 时钟显示程序。课程名称 微机原理与接 术。评阅成绩 评阅意见 成绩评定教师签名 日期 年月日。第一部分 任务与要求。利用芯片8253和8259a完成时钟显示程序...

汇编课程设计

汇编语言课程临近结束时,将利用实验课和理论课最后阶段时间 大约14周开始,具体安排听通知 让同学们进行题目的答辩。分组 每5到6人一组,推选出组长。每组同学选一组题目,且任两组同学不得选重复组的题目,两班同学不要选相同组题目。请班长在第三周周一前将分组及选题的汇总excel电子版发到我邮箱。选第一组...