微机原理大作业

发布 2022-09-04 21:10:28 阅读 4001

一、1.程序。stack segment stack

db 256 dup(?)

top label word

stack ends

data segment

table dw g1, g2, g3, g4, g5

string1 db '1. change small letters into capital letters of string;',0dh, 0ah, '

string2 db '2. find the maximum of string;',0dh, 0ah, '

string3 db '3. sort for datas;',0dh, 0ah, '

string4 db '4. show time;',0dh, 0ah, '

string5 db '5. exit.',0dh, 0ah, '

stringn db 'input the number you select (1-5) :

in_str db 'input the string (including letters & numbers, less than 60 letters) :0dh, 0ah, '

prestr db 'original string :

newstr db 'new string

out_str db 'the string is $'

maxchr db 'the maximum is $'

in_num db 'input the numbers (0 - 255, no more than 20 numbers) :0dh, 0ah, '

out_num db 'sorted numbers : 0dh, 0ah, '

in_tim db 'correct the time (hh:mm:ss) :

hintstr db 'press esc, go back to the menu; or press any key to play again!$'

keybuf db 61

db ?db 61 dup (?

numbuf db ?

db 20 dup (?

data ends

code segment

assume cs:code, ds:data, ss:stack

start:

mov ax, data

mov ds, ax

mov ax, stack

mov ss, ax

mov sp, offset top

main: call far ptr menu设置显示器。

again:

mov ah, 2

mov bh, 0页号。

mov dl, 41列号。

mov dh, 10行号。

int 10h光标位置设置。

mov ah, 1

int 21h

cmp al, '1'

jb again

cmp al, '5'

ja again

sub al, '1n-1

shl al, 1n-1)*2

cbwal->ax

lea bx, table

add bx, ax

jmp word ptr [bx]

g1:call far ptr chgltr

mov ah, 8

int 21h

cmp al, 1bh

jz main

jmp g1

g2:call far ptr maxltr

mov ah, 8

int 21h

cmp al, 1bh

jz main

jmp g2

g3:call far ptr sortnum

mov ah, 8

int 21h

cmp al, 1bh

jz main

jmp g3

g4:call far ptr timchk

mov ah, 8

int 21h

cmp al, 1bh

jz main

jmp g4

g5:mov ah, 4ch

int 21h

menu proc far显示主界面。

;设置显示器方式。

mov ah, 0

mov al, 3;

mov bl, 0;

int 10h清屏。

mov ah, 2

mov bh, 0页号。

mov dl, 5列号。

mov dh, 5行号。

int 10h光标位置设置。

mov ah, 9

lea dx, string1

int 21h

mov ah, 2

mov dl, 5列号。

mov dh, 6行号。

int 10h光标位置设置。

mov ah, 9

lea dx, string2

int 21h

mov ah, 2

mov dl, 5列号。

mov dh, 7行号。

int 10h光标位置设置。

mov ah, 9

lea dx, string3

int 21h

mov ah, 2

mov dl, 5列号。

mov dh, 8行号。

int 10h光标位置设置。

mov ah, 9

lea dx, string4

int 21h

mov ah, 2

mov dl, 5列号。

mov dh, 9行号。

int 10h光标位置设置。

mov ah, 9

lea dx, string5

int 21h

mov ah, 2

mov dl, 5列号。

mov dh, 10行号。

int 10h光标位置设置。

mov ah, 9

lea dx, stringn

int 21h

retmenu endp

chgltr proc far将输入字符串中小写字母便换成大写字母。

rechg:

;设置显示器方式。

mov ah, 0

mov al, 3

mov bl, 0

int 10h清屏。

mov ah, 2

mov bh, 0页号。

mov dl, 5列号。

mov dh, 5行号。

int 10h输入提示光标位置设置。

mov ah, 9

lea dx, in_str

int 21h输入字符串提示。

mov ah, 2

mov dl, 5列号。

mov dh, 6行号。

int 10h输入字符串光标位置设置。

mov ah, 0ah

lea dx, keybuf

int 21h输入字符串。

cmp keybuf + 1, 0

jz rechg判断输入字符串是否为空串。

lea bx, keybuf + 2

mov al, keybuf + 1

cbwmov cx, ax

add bx, ax

mov byte ptr [bx在输入字符串尾加结束标志$

mov ah, 2

mov bh, 0页号。

mov dl, 5列号。

mov dh, 7行号。

int 10h源字符串提示光标位置设置。

mov ah, 9

lea dx, prestr

int 21h输出源字符串提示。

mov ah, 9

lea dx, keybuf + 2

int 21h输出源字符串。

lea bx, keybuf + 2

lchg:cmp byte ptr [bx], 61h

jb nochg

and byte ptr [bx], 0dfh

nochg:

inc bx

loop lchg将字符串中小写字母转换成大写字母。

mov ah, 2

mov bh, 0页号。

mov dl, 5列号。

mov dh, 8行号。

int 10h新字符串提示光标位置设置。

mov ah, 9

lea dx, newstr

int 21h输出新字符串提示。

mov ah, 9

lea dx, keybuf + 2

int 21h输出新字符串。

mov ah, 2

mov bh, 0页号。

mov dl, 5列号。

mov dh, 9行号。

int 10h提示信息光标位置设置。

mov ah, 9

lea dx, hintstr

int 21h输出提示信息。

retchgltr endp

maxltr proc far在输入字符串中找出最大值。

remax:

;设置显示器方式。

mov ah, 0

mov al, 3

mov bl, 0

int 10h清屏。

mov ah, 2

mov bh, 0页号。

mov dl, 5列号。

mov dh, 5行号。

int 10h输入提示光标位置设置。

mov ah, 9

lea dx, in_str

int 21h输入字符串提示。

mov ah, 2

mov dl, 5列号。

mov dh, 6行号。

int 10h输入字符串光标位置设置。

mov ah, 0ah

lea dx, keybuf

int 21h输入字符串。

cmp keybuf + 1, 0

jz remax判断输入字符串是否为空串。

lea bx, keybuf + 2

mov al, keybuf + 1

cbwmov cx, ax

add bx, ax

mov byte ptr [bx在输入字符串位加结束标志$

mov ah, 2

mov bh, 0页号。

mov dl, 5列号。

mov dh, 7行号。

int 10h源字符串提示光标位置设置。

mov ah, 9

lea dx, out_str

int 21h输出字符串提示。

mov ah, 9

lea dx, keybuf + 2

int 21h输出字符串。

mov ah, 2

mov bh, 0页号。

mov dl, 5列号。

mov dh, 8行号。

int 10h新字符串提示光标位置设置。

mov ah, 9

lea dx, maxchr

int 21h输出字符串中最大值提示。

mov dl, 0

lea bx, keybuf + 2

lcmp:cmp [bx], dl

jb nolchg

mov dl, [bx]

nolchg:

inc bx

loop lcmp找出字符串中最大字符,放入dl

mov ah, 2

int 21h输出字符串中最大字符。

mov ah, 2

mov bh, 0页号。

mov dl, 5列号。

mov dh, 9行号。

int 10h提示信息光标位置设置。

mov ah, 9

lea dx, hintstr

int 21h输出提示信息。

retmaxltr endp

sortnum proc far对输入数据组排序。

resort:

;设置显示器方式。

mov ah, 0

mov al, 3

mov bl, 0

int 10h清屏。

mov ah, 2

微机原理大作业

大作业2 8086微机系统设计,具体要求如下 工作在最小方式。2 工作时钟频率为 5mhz。3 系统地址总线形成用74ls373。系统数据总线形成用74ls245。4 外部扩充设计16kb程序存储器,芯片选用intel2764,首地址从fc000h开始 外部扩充设计16kb数据存储器,芯片选用int...

微机原理课程大作业

张三在工作中需用8086汇编语言编程,且经常需进行三个变量x,y及z的如下运算 为此张三决定将该三变量的运算操作写成子程序,以便随时调用。不过张三不想自己独立编写该8086汇编子程序,而是采用如下方式获得该8086汇编子程序 编写如下c语言程序 注意 整理过程主要包括调整变量x,y及z为16位数据长...

西电微机原理大作业

科目 微机原理与系统设计 授课老师 李明 何学辉 学院 电子工程学院 专业 电子信息工程 学生姓名。学号。基于8086最小方式系统总线完成电路设计及编程 1 扩展16k字节的rom存储器,起始地址为 0x10000 intel 2764的存储容量为8kb,因此用两片intel 2764构成连续的ra...