欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

微机原理期末汇编部分编程题复习

程序员文章站 2024-01-30 23:27:16
...

1.设数据段ARRAY单元开始有50个有符号数的字节数,要求统计其中负数的个数,并存入到数据段中的RESULT变量中。写出实现该功能的汇编程序

DATA  SEGMENT
	ARRAY DB 1234-1……
RESULT  DB  0  ;统计负数的个数
DATA   ENDS
CODE   SEGMENT 
      ASSUME: CS: CODE, DS:DATA
START:
      MOV   AX, DATA
      MOV   DS, AX
	  LEA    SI, ARRAY ;取首位偏移地址
      MOV    CX, 50 ;循环次数
HAHA:  MOV  AL, [SI]  ;取出第一个数送AL
       INC  SI    ;指向下一个位置
       TEST   AL, 80H  ;测试符号位
       JZ    NEXT   ;非负,跳转
       INC  RESULT   ;否则,result加1
NEXT:   LOOP   HAHA
CODE  ENDS  
END    START

2.若DATA1与DATA2都是内存单元的地址,编写一段程序实现将DATA1单元开始的100个数传送到DATA2开始的存储区内的功能。

LEA  SI , DATA1
LEA  BX , DATA2
MOV   CX ,100
NEXT:    MOV   AL,[SI]   ;取出DATA1中的数到AL
MOV   [BX], AL   ;将AL中的值传到DATA2中
INC  SI
INC  BX
LOOP  NEXT
HLT

3.编写程序,将以BLOCK单元开始的100个存储单元清0。要有段说明和必要的伪指令。

DATA   SEGMENT 
BLOCK  DB 100 DUP(?)
DATA ENDS
CODE   SEGMENT
ASSUME CS:CODE, DS:DATA
START:   MOV  AX, DATA 
MOV  DS, AX
LEA   BX, BLOCK
MOV  CX, 100
NEXT:   MOV  BYTE PTR[BX], 0  ;清0
INC BX   ;指向下一个位置
LOOP  NEXT
CODE   ENDS
END   START

4.编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来

START:  MOV  AH,1
  INT  21H
CMP   AL, ‘a’
JB  STOP
CMP  AL, ‘z’
JA   STOP
SUB   AL, 20H
MOV  DL, AL
MOV  AH, 2
INT 21H
JMP  START 
STOP:   RET

相关标签: 微机原理