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

计算机原理MCS习题答案

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

ret

pchar endp code ends

end main

8. 以10进制形式显示内存中一有符号字节数据

例:var

db

0ffH

屏幕应显示:The result is: -1

data segment para

var str1 buf

db 7fh

db 0dh, 0ah, ‘The result is: ’ db 4 dup(‘ ’) db ‘$’

data ends

ss_seg segment stack

dw

100 dup(0)

ss_seg ends code segment para

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

mov mov mov cmp jge mov neg

ax, data ds, ax buf, ‘+’ var, 0 next buf, ‘-‘ var al, var cx, 3 dl, 10

11

;判断var是正数,还是负数

;若var为负,则得到其相反数

next: mov

mov

mov

lea bx, buf+3 ah, 0 dl

; (AX / 10)商 ? al ; (AX / 10)余数? ah

main1: mov

div add mov dec

loop lea mov int mov int

ah, 30h [bx], ah bx main1 dx, str1 ah, 9 21h ax, 4c00h 21h

;循环3次,分别得到百、十、个位 ;显示10进制数

exit:

main endp

code ends

end main

9. 将一个16位的无符号数var, 转换为非压缩格式BCD码,存放在内存中buf

开始的单元中。(按高位在前、低位在后的顺序存放) data segment para

var buf

dw 800H db 5 dup(0)

data ends

ss_seg segment stack

dw

100 dup(0)

ss_seg ends code segment para

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

mov mov

ax, data ds, ax

12

mov cx, 16 main1: shl var, 1

lea

bx, 4

push cx

mov

cx, 5 main2: mov al, buf[bx] adc al, al AAA

mov buf[bx], al dec bx loop main2

pop cx

loop main1

exit: mov ax, 4c00h

int

21h

main endp

code ends

end main

;((0*2 + B15)*2 + B14)*2 + … + )*2 + B0

;得到var的Bi位

;执行buf*2 + Bi操作

非压缩格式BCD码调整

;内循环为5次

;外循环为16次

13

选作题:

10. 内存中从str开始存放一字符串,结束符为NULL字符,请编写程序统计该

字符串中单词的个数 例:str1

db 0dh, 0ah, ‘Hello world, welcome to DUT. CPU is central

processing unit!’, 0h

统计’….’中的单词个数,结果为10

data

segment

para

str1 db 'long long ago, there lived a king, the king asked the artist to ’ db ‘draw a horse for him ',0

words dw 0

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 mov lea mov cld

far ds ax, ax ax

ax, data ds, ax cx, 0

;用cx存放单词数

si, str1

bl, ' '

;bl总保存当前字符的前一个字符

main_3: lodsb

and jz cmp jnz

al, al main_1

al, ' '

;比较是否是空格

;判断al是否为结束符0

main_2

bl, ' '

;比较前一个字符是否为空格,不是则此空格 ;不能算一个单词

14

main_4: cmp

jz cmp

main_5

bl, ','

;比较前一个字符是否为逗号,如果是则此空 ;格也不能算一个单词

jz inc

main_5 cx

;只有当前字符为' '或','而且前一个字符为有 ;效字符时,才对单词数加1

jmp main_5

al, ','

;比较是否是','号

main_2: cmp

jz

main_4

bl, al

;进入这里表明此时al中内容不是0,' ', ','三种 ;符号,保存al到bl

main_5: mov

jmp main_3

bl, ' '

;判断结束符前面是否为单词,还是为一个' '或','

main_1: cmp

jz cmp jz inc

main_6

bl, ','

main_6 cx

;若结束符前是一个有效字符,那么单词数应该加1

main_6: mov

ret endp

words, cx

main

code

ends

main

end

11 编写程序用键盘1~7键,模拟7个音符,进行键盘演奏!

注:需要对8253的定时器2和8255的PB口进行初始化

data

segment

para

Table_L dw 131,147,165,175,196,220,247,262 ;低音1-7的频率 Table_M dw 262,294,330,349,392,440,494,523 ;高音1-7的频率 shift_1 equ 21h shift_2 equ 40h shift_3 equ 23h shift_4 equ 24h shift_5 equ 25h shift_6 equ 5Eh shift_7 equ 26h

15

计算机原理MCS习题答案

retpcharendpcodeendsendmain8.以10进制形式显示内存中一有符号字节数据例:vardb0ffH屏幕应显示:Theresultis:-1datasegmentparavar
推荐度:
点击下载文档文档为doc格式
6ia3p84nq347hq70zb090vngk58yua010h8
领取福利

微信扫码领取福利

微信扫码分享