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电子版发到我邮箱。选第一组...