微机原理期末汇编部分编程题复习
程序员文章站
2024-01-30 23:27:16
...
1.设数据段ARRAY单元开始有50个有符号数的字节数,要求统计其中负数的个数,并存入到数据段中的RESULT变量中。写出实现该功能的汇编程序
DATA SEGMENT
ARRAY DB 1,2,3,4,-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