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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值