好文档 - 专业文书写作范文服务资料分享网站

计算机原理MCS习题答案

天下 分享 时间: 加入收藏 我要投稿 点赞

shift_8 equ 2Ah

ends

stack

data

ss_seg segment

db 256 dup(?)

ss_seg ends code

segment

assume cs:code,ds:data,ss:ss_seg main

proc push xor push mov mov

far ds ax, ax ax

ax, data ds, ax ah, 0

;利用bios的16号中断,扫描键盘按键 ;AL中返回按键ASCII码,AH中返回按键扫描码 ;判断是否为回车键,是回车键就退出 ;装载数据段寄存器ds,使之指向当前数据段

;将psp+0h处段地址和偏移量压入堆栈以便返回OS

main_1: mov

int cmp jz cmp jb cmp ja and

16h

al, 0dh

main_exit

al, '1'

main_2

al, '8'

main_2 ax, 000fh

;说明按下的是低音1-7,与操作将ASCII ;码转换到数字1-8

dec shl lea

al al, 1

;将数值转换成以0开始的数字,以便从表中查找频率值 ;将数值乘以2,因每个频率值是字变量

bx, Table_L

si, ax di, [bx+si] bx, 5000

;从表中取频率值 ;发声时间

main_12:mov

mov mov

call GenSound jmp

main_1

al, shift_1

;判断是否按下shift+1键

main_2: cmp

jnz mov

main_3

ax, 0

16

jmp main_11 main_3: cmp jnz mov

jmp

main_4: cmp jnz mov

jmp

main_5: cmp jnz mov

jmp

main_6: cmp jnz mov

jmp

main_7: cmp jnz mov

jmp

main_8: cmp jnz mov

jmp

main_9: cmp jnz mov

jmp

main_10:jmp main_11:lea

jmp

main_exit:

ret

al, shift_2

main_4

ax, 2

main_11

al, shift_3

main_5

ax, 4

main_11

al, shift_4

main_6

ax, 6

main_11

al, shift_5

main_7

ax, 8

main_11

al, shift_6

main_8

ax, 10

main_11

al, shift_7

main_9

ax, 12

main_11

al, shift_8

main_10

ax, 14

main_11

main_1

bx, Table_M main_12

;判断是否按下shift+2键

;判断是否按下shift+3键

;判断是否按下shift+4键

;判断是否按下shift+5键

;判断是否按下shift+6键

;判断是否按下shift+7键

;判断是否按下shift+8键

17

main endp

;发声程序

;入口:di中存放的是定时器2的计数值 ; bx中存放的是延时的时间 ;出口:无 GenSound proc push push push push push push mov out mov mov div out mov out in mov or

out

GenSound_2:

mov

GenSound_1: nop loop dec jnz mov out

pop

ax

;保护现场

bx cx dx si di

al, 0b6h ;写定时器模式

43h, al dx, 12h ;定时器分频,533h*896=123280h

ax, 3280h

di

;533h*896/给定频率 42h, al ;写定时器2的低字节

al, ah

42h, al ;写定时器2的高字节

al, 61h ;得到当前61h端口的设置,并保存在ah中

ah, al

al, 03h ;打开扬声器发声

61h, al

cx, 3000

GenSound_1 bx

GenSound_2

al, ah

;关闭扬声器

61h, al di

;恢复现场

18

pop si pop dx pop cx pop bx pop ax

ret

GenSound endp

code ends

end

main

19

计算机原理MCS习题答案

shift_8equ2Ahendsstackdatass_segsegmentdb256dup(?)ss_segendscodesegmentassumecs:code,ds:data,ss:ss_segmain
推荐度:
点击下载文档文档为doc格式
6ia3p84nq347hq70zb090vngk58yua010h8
领取福利

微信扫码领取福利

微信扫码分享