(微机原理及应用)编程题试题集_第1页
(微机原理及应用)编程题试题集_第2页
(微机原理及应用)编程题试题集_第3页
(微机原理及应用)编程题试题集_第4页
(微机原理及应用)编程题试题集_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、重庆科技学院试卷库系统试卷库导出试卷微机原理及应用-编程题(43题)题序:0017 题型:06 难度:01 分值:10.0章号:03 节号:02知识点:。8086/8088指令系统题干:变量datax和datay定义如下:    datax   dw   0148h            dw   2316h     datay  dw   0237h

2、60;           dw   4052h试编写一个程序段,实现将datax和datay两个字数据相乘(用mul)。答案: 解:   (1)   mov      ax, dataxmul       dataymov      datay,axmov  

3、;    datay+2,dx题序:0018 题型:06 难度:02 分值:10.0章号:03 节号:02知识点:。8086/8088指令系统题干:变量datax和datay定义如下:    datax   dw   0148h            dw   2316h     datay  dw   0237h &

4、#160;          dw   4052h试编写一个程序段,实现将datax除以23(用div)。答案: 解:   (1)   mov      ax, datax       mov      bl, 23div     

5、0;  blmov      bl,ahmov      ah, 0mov      datay, ax            。存放商mov      al,blmov      datay+2, dx  &

6、#160;    。存放余数题序:0002 题型:06 难度:03 分值:10.0章号:03 节号:02知识点:。8086/8088指令系统题干:试编写一个程序段,实现将bx中的数除以10,结果仍放在bx中。 答案: 解:       mov cl,0ah                 mov ax,bx 

7、                div  cl                 mov bx,ax题序:0016 题型:06 难度:03 分值:10.0章号:03 节号:02知识点:。8086/8088指令系统题干:变量datax和datay定义如下:  &#

8、160; datax   dw   0148h                    dw   2316h     datay  dw   0237h             &#

9、160;      dw   4052h试编写一个程序段,实现将datax和datay中的两个双字数据相加, 和存放在datay和答案: 解:   (1)   mov      ax, dataxadd       ax, dataymov      bx, datax+2add    &

10、#160;  bx, datay+2mov      datay, axmov      datay+2, bx题序:0020 题型:06 难度:03 分值:10.0章号:03 节号:02知识点:。8086/8088指令系统题干:变量n1和n2均为2字节的非压缩bcd数码,请写出计算n1与n2之差的指令序列。答案: 解:  mov      ax, 0mov    &

11、#160; al, n1+1sub al, n2+1aasmov      dl, almov      al, n1sbb al, n2aasmov      dh, al题序:0006 题型:06 难度:02 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:编写程序实现对两个存储区中的字进行比较。如找到一对不同的字,则退出,此时 ,zf为0,di 指向此字;如两个存储区中所有的字都相同,则退出程序时,cx中值为0,zf为

12、1。答案: 解:  matt:   mov     si, offset source     。 源区首址        mov     di, offset target     。 目的区首址        mov  

13、60;  cx, number        jcxz    exit                  。 如cx为0,则结束        push    cx    

14、0;               。 保存有关寄存器        push    si         push    di         cld 

15、0;                         。 清方向标志        repe    cmpsw        jz     

16、 match                 。 比较        pushf                        

17、。 zf为1,则转移        sub     di, 2                 。 zf为0,则di指向次字        popf        jmp 

18、0;   exit                  。 推出match:  pop     di                    。 恢复寄存器 

19、60;      pop     si        pop     cxexit:   ret题序:0015 题型:06 难度:02 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:根据下列要求编写一个汇编语言程序::(1)代码段的段名为cod_sg(2)数据段的段名为dat_sg(3)堆栈段的段名为stk_sg(4)变量high_dat所包含的数据为9

20、5(5)将变量high_dat装入寄存器ah,bh和dl(6)程序运行的入口地址为start答案: 解:  dat_sg        segemnt       high_dat     db   95dat_sg        ends。stk_sg       

21、segment        dw       64 dup(?)stk_sg        ends。cod_sg       segmentmain            proc     farassum

22、e cs: cod_sg, ds: dat_sg, ss: stk_sgstart:   mov      ax, dat-sg              mov      ds, ax              mov

23、      ah, high_dat              mov      bh, ahmov      dl, ahmov      ah, 4chint        21hmain

24、0;    endpcod_sg ends                 end     start题序:0026 题型:06 难度:02 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:已知整数变量a和b,试编写完成下述操作的程序:(1)若两个数中有一个是奇数,则将该奇数存入a中,偶数存入b中;(2)若两个数均为奇数,则两数分别加1,并存回原

25、变量;(3)若两个数均为偶数,则两变量不变。答案: 解:  dseg segment       a      dw   ?       b     dw   ?dseg endscseg        segmentmain  

26、     proc   farassume    cs:cseg,ds:dsegstart:       push       ds              sub         ax,

27、ax              push       ax              mov        ax,dseg       &#

28、160;      mov        ds,axbegin:      mov        ax,a              mov        bx

29、,b              xor         ax,bx              test         ax,0001    

30、;          jz            class              test         bx,0001     &

31、#160;        jz            exit              xchg       bx,a         &

32、#160;    mov        b,bx              jmp         exitclass:      test         b

33、x,0001              jz            exit              inc          b

34、0;             inc          aexit: retmain       endpcseg        ends          &

35、#160;   end         start题序:0001 题型:06 难度:03 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:在ds段中有一个从table开始的由160个字符组成的链表,设计一个程序,实现对此表进行搜索,找到第一个非0元素后,将此单元和下一单元清0。答案: 解:       mov   cx, seg table    

36、;      mov   ds, cx           。将段地址送ds          mov   si, offset table 。表偏移量送si          mov   cx, 160

37、60;         。字节数          xor  al, al   next:  cmp   al, si          jne   exit1       

38、60;  inc   si          loop  next   exit1: mov   si, al          inc   si          mov   si, al题序:0004 题型

39、:06 难度:03 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:用循环控制指令设计程序段,从60h 个元素中寻找一个最大值,结果放在al中。答案: 解:          mov  si, offset data1 。 将数据起始地址送si         mov  cx, 5fh       

40、0;  。 有60h-1次循环         mov  al, si         。 将第一个元素放al中compare: inc  si         cmp  al, si         jl   xchm

41、ax         jmp  next xchmax:  mov  al, sinext:    loop compare题序:0007 题型:06 难度:03 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:编写程序实现在table 为起始地址的100个字符长度的表中检索“$"字符。答案: 解:  start:  mov     c

42、x, seg table        。 表段地址送es        mov     es, cx         mov     di, offset table     。 表偏移量送di     &#

43、160;  mov     al, '$'              。 检索的关键字        mov     cx, 64h              。

44、检索的字节数        push    di                       。 保存起始地址        cld       &#

45、160;                           清除方向标志        repne   scasb            

46、    。 检索        jnz     nfoun                。 如未找到,则转移        sub     di, 1    

47、                  找到,则指向字符        jmp     exitnfoun:  pop     di            

48、0;      。 恢复起始地址exit:   ret            题序:0009 题型:06 难度:03 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:编写程序实现两个16位非组合bcd码的数相加。答案: 解:  anbcd:  mov  ch, ah 。 进入程序段时,ax中为第二个操作数  

49、0;     add  al, bl 。 bx中为被加数,实现低8位相乘        aaa         xchg al, ch        adc  al, bh 。 实现高8位相加        aaa   

50、      mov  ah, al 。 和保存在ax中        mov  al, ch        ret题序:0010 题型:06 难度:03 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:编写程序段设计一个实现16位非组合bcd码减法的程序。答案: 解:  subcd:  mov  ch, ah

51、0; 。 ax-bx->ax,为非组合bcd码                  sub  al, bl                  aas        &

52、#160;         xchg al,ch                  sbb  al,bh                  aas  

53、                mov  ah,al                  mov  al,ch            

54、0;     ret题序:0011 题型:06 难度:03 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:编写程序实现两个16位组合bcd码相减,进入程序时,bx中为减数,ax中为被减数,程序执行后,结果在ax中。答案: 解:  stasub: mov  ch, ah 。 保存高8位        sub  al, bl 。 低8位相减      

55、60; das         。 十进制调整        xchg al, ch        sbb  al, bh 。 高8位相减        das         mov  ah, al 。 结果

56、在ax中         mov  al, ch        ret题序:0012 题型:06 难度:03 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:编写程序实现两个16位组合bcd码相加。进入程序时,bx中为加数,ax中为被加数,程序执行后,结果在ax中。答案: 解:  staadd: mov  ch, ah  。 ax+bx->ax,为组合bcd码

57、                add  al,bl                daa                xchg al,c

58、h                adc  al,bh                daa                mov 

59、; ah,al                mov  al,ch                ret题序:0013 题型:06 难度:03 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:编写程序将一个8位二进转换为2位bcd数字,进入程序时,al中为二进制数,退

60、出程序时,如cf为0,则al中为bcd数字,如cf为1,则表示由于输入值超出范围故结果无效。答案: 解:  start:  cmp  al, 99 。 是否超出范围?            jbe  strat            stc      

61、0;  。 是,则转exit,并给cf置1            jc   exitstrat:  mov  cl, 10 。 10作为除数        xor  ah, ah        cbw       

62、60; 。 将al中数扩展到ah        div  cl     。 除法结果al中为高位,ah中为低位        mov  cl, 4        shl  al, cl 。 左移4位        or   al,

63、 ah 。 合成bcd码在al中exit:   ret  题序:0014 题型:06 难度:03 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:编写程序用xlat指令将小于16的二进制数转换成ascii表示的16进制数。答案: 解:  start:  jmp  binascascii   db   '0123456789abcdef'binasc: push bx     &#

64、160;  and  al, 0fh  。 清除al中高4位        lea  bx,ascii 。 bx指向ascii表        xlat          。 转换为ascii码        pop  bx  &

65、#160;     ret题序:0030 题型:06 难度:03 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:编写完整的8086汇编程序:将字符缓冲区a的字符'1234567890'倒序存放到缓冲区b中。答案: 解:  dseg    segmenta      db    '1234567890'dseg    endseseg

66、    segment                      b      db    10   dup(?)eseg    endscseg    segment  

67、0;                  assume  cs:cseg,ds:dseg,es:esegstart:   mov   ax,dseg        mov   ds,ax        mov&#

68、160;  ax,eseg        mov   es,ax        lea   si,a        lea   di,b       add   di,9      

69、;  mov  cx,10                move:    cld        lodsb        std        stosb  

70、      loop   move mov     ah,4ch                                  

71、0; int    21hcseg     endsend     start  题序:0031 题型:06 难度:03 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:编写完整的8086汇编程序:查表求x(0-9)的立方并将结果存放到变量xxx中去。答案: 解:  data   segmenttab    dw  0,1,8,27,64,125,216,343,5

72、12,729x      db  8xxx    dw  ?data   ends                          code   segmentassume cs:code,ds:data&#

73、160;              start: mov  ax,data               mov  ds,ax              。为ds送初值  

74、          mov al,x       add  al ,al        mov  bl,al              。求立方表的偏移       mov

75、0; bh,0       mov  ax,tab bx        。查表          mov  xxx,ax             。保存       mov  ah

76、,4ch             。返回dos       int  21hcode   endsend start题序:0033 题型:06 难度:03 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:编写程序,计算下面函数的值。答案: 解:  data  segment    

77、60; x  dw  34      s  dw   ?data  endscode  segment      assume  cs:code,ds:datastart:mov  ax,data       mov  ds,ax       mov  ax,x

78、0;                               ;将x送到ax中       cmp  ax,0         

79、0;                      ;(ax)0吗?        jl   doub                 

80、0;               ;是,转向doub       cmp  ax,10                         &#

81、160;     ;否,(ax)10吗?       jle  trib                                  ;是,转向trib&

82、#160;      sal  ax,1                                 ;否,乘以4       sal  ax,1

83、       jmp  exitdoub: sal  ax,1                                ;乘以2       j

84、mp  exittrib: sal  ax,1                                  ;乘以3       add  ax,xexit: mov

85、0; s,ax                                 ;保存结果       mov  ah,4ch       

86、                      ;结束       int  21hcode  ends       end  start题序:0035 题型:06 难度:03 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题

87、干:已知在内存中从block单元起存放有20个带符号字节数据(-7,1,12,-90,-70,34,-1,56,45,-12),统计其中负数的个数并放入count单元。答案: 解:  data  segment    block  db  -7,1,12,-90,-70,34,-1,56,45,-12     cn  equ  $-block    count  db  ?data  e

88、ndscode  segment      assume  ds:data,cs:codestart:mov  ax,data      mov  ds,ax      mov  dl,0      lea  si,block      mov  cx,cnlp: &#

89、160; mov  al,si      test al,80h      jz   next      inc  dlnext: inc  si      loop  lp      mov  count,dl      mov

90、  ah,4ch      int  21hcode  ends      end  start题序:0036 题型:06 难度:03 分值:10.0章号:04 节号:02知识点:。汇编语言及程序设计题干:编写程序先判断数据段中buffer1单元中的字母是否是大写字母,若是,将其转换为对应的小写字母。答案: 解:  data  segmentbuffer db ?     data 

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论