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

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

猜你喜欢

转载自blog.csdn.net/weixin_42240667/article/details/106572695