北京理工大学汇编语言练习题及答案1

时间:2024.4.21

一、

1. 请任意输入一个字符串,将该串倒序后在屏幕上显示。

DATAS SEGMENT BUF DB 40 DB ?

DB 40 DUP(0) ACC DB 0 CHAR DB ? DATAS ENDS

STACKS SEGMENT DB 100 DUP(0) STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START:

MOV AX,DATAS MOV DS,AX

MOV AH,0AH LEA DX,BUF

INT 21H ; 输入字符串

MOV AH,0EH MOV AL,0DH

INT 10H MOV AL,0AH

INT 10H ;回车换行

LEA SI,BUF MOV AL,[SI+1] MOV AH,0 MOV ACC,AL INC SI ADD SI,AX

L1: MOV DL,[SI] MOV AH,02H INT 21H DEC SI DEC ACC CMP ACC,0 JNZ L1

MOV AH,4CH INT 21H CODES ENDS END START

2. 请任意输入一个字符串,统计其中空格和A的个数,并将结果显示在屏幕上。

DATA SEGMENT BUF DB 100 DB ?

DB 100 DUP(?) CHAR DB 0 ACC DB 0 SPACE DB 0 CHARA DB 0 DATA ENDS STACK SEGMENT DB 100 DUP(0) STACK ENDS CODE SEGMENT ASSUME

DS:DATA,CS:CODE

MAIN PROC FAR MOV AX,DATA MOV DS,AX

LEA DX,BUF MOV AH,0AH INT 21H ;输入字符串

MOV AH,02H MOV DL,0DH INT 21H MOV DL,0AH INT 21H

LEA SI,BUF

MOV AL,[SI+1] MOV ACC,AL MOV SI,2

L: CMP BUF[SI],' ' JZ LSPACE CMP BUF[SI],'A' JZ LCHARA INC SI DEC ACC CMP ACC,0 JZ SHOW JMP L LSPACE:

INC SPACE INC SI DEC ACC CMP ACC,0 JZ SHOW JMP L LCHARA: INC CHARA INC SI DEC ACC CMP ACC,0 JZ SHOW JMP L SHOW:

CMP SPACE,0AH JAE SHOWS ADD SPACE,30H MOV DL,SPACE MOV AH,2

INT 21H ;若SPACE小于10个,直接输出个数 SHOW1: MOV AH,0EH

MOV AL,0DH INT 10H MOV AL,0AH INT 10H

CMP CHARA,0AH JAE SHOWA ADD CHARA,30H MOV AH,2 MOV DL,CHARA INT 21H ;若A个数小于10,直接输出个数 JMP EXIT SHOWS:

MOV AL,SPACE MOV AH,0 MOV DL,10 DIV DL ADD AH,30H MOV SPACE,AH ADD AL,30H MOV AH,2 MOV DL,AL INT 21H

MOV DL,SPACE INT 21H JMP SHOW1 SHOWA:

MOV AL,CHARA MOV AH,0 MOV DL,10 DIV DL ADD AH,30H MOV CHARA,AH ADD AL,30H MOV AH,2 MOV DL,AL INT 21H

MOV DL,CHARA INT 21H EXIT:

MOV AH,4CH INT 21H MAIN ENDP CODE ENDS END MAIN

3. 请任意输入一个字符串,将其中的空格全部删除,并将结果显示在屏幕上。

DATA SEGMENT BUF DB 100 DB ?

DB 100 DUP(?) INP DB 'Please input a string:','$' CHAR DB 0 ACC DB 0 DATA ENDS STACK SEGMENT DB 100 DUP(0) STACK ENDS CODE SEGMENT ASSUME

DS:DATA,CS:CODE,ES:STACK START:

MOV AX,DATA

MOV DS,AX ; 赋初值

MOV AH,09H LEA DX,INP

INT 21H ; 提示输入

MOV AH,0AH LEA DX,BUF

INT 21H ; 输入字符串

MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH

INT 21H ; 回车换行

LEA SI,BUF MOV DL,[SI+1] MOV ACC,DL MOV SI,2 LOP:

MOV DL,BUF[SI] MOV CHAR,DL CMP CHAR,' ' JZ LADD MOV AH,2 MOV DL,CHAR INT 21H ;若不是空格则输出 LADD: INC SI DEC ACC CMP ACC,0

JZ EXIT JMP LOP EXIT:

MOV AH,4CH INT 21H CODE ENDS

END START

4. 请任意输入一个字符串,将其中A换成B,并将结果显示在屏幕上。

DATA SEGMENT

INP DB 'Please input a string:','$' CHAR DB 0 ACC DB 0 BUF DB 50 DB ? DB 50 DUP(0) DATA ENDS STACK SEGMENT DB 100 DUP(0) STACK ENDS CODE SEGMENT ASSUME

CS:CODE,DS:DATA START:

MOV AX,DATA MOV DS,AX

MOV AH,9 LEA DX,INP

INT 21H ;提示输入字符串

MOV AH,0AH LEA DX,BUF INT 21H MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H ;输入字符串

LEA SI,BUF MOV DL,[SI+1] MOV ACC,DL ;记录字符串个数

MOV SI,2 MOV AH,2 LA: MOV DL,BUF[SI]

CMP DL,'A' JZ PUTCC INT 21H LAD:INC SI DEC ACC MOV DH,ACC CMP DH,0 JZ EXIT JMP LA PUTCC: MOV DL,'C' INT 21H INT 21H JMP LAD EXIT:

MOV AH,4CH INT 21H CODE ENDS END START

5. 请任意输入一个字符串,将其中A换成CC,并将结果显示在屏幕上。

DATA SEGMENT

INP DB 'Please input a string:','$' CHAR DB 0 ACC DB 0 BUF DB 50 DB ? DB 50 DUP(0) DATA ENDS STACK SEGMENT ASSUME

CS:CODE,DS:DATA START:

MOV AX,DATA MOV DS,AX

MOV AH,9

LEA DX,INP

INT 21H ;提示输入字符串

MOV AH,0AH LEA DX,BUF INT 21H MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H ;输入字符串

LEA SI,BUF MOV DL,[SI+1] MOV ACC,DL ;记

录字符串个数

MOV SI,2 MOV AH,2 LA: MOV DL,BUF[SI] CMP DL,'A' JZ PUTCC INT 21H LAD:INC SI DEC ACC MOV DH,ACC CMP DH,0 JZ EXIT JMP LA PUTCC: INT 21H INT 21H

JMP LAD EXIT:

MOV AH,4CH

INT 21H CODE ENDS END START

6. 请任意输入一个字符串,将其中大写字母换成小写字母,并将结果显示在屏幕上。

DATA SEGMENT

INP DB 'Please input a string:','$' CHAR DB 0 ACC DB 0 BUF DB 50 DB ? DB 50 DUP(0) DATA ENDS STACK SEGMENT DB 100 DUP(0) STACK ENDS CODE SEGMENT ASSUME

CS:CODE,DS:DATA START:

MOV AX,DATA MOV DS,AX

MOV AH,9 LEA DX,INP

INT 21H ;提示输入字符串

MOV AH,0AH LEA DX,BUF INT 21H MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H ;输入字符串

LEA SI,BUF MOV DL,[SI+1] MOV ACC,DL ;记录字符串个数

MOV SI,2 MOV AH,2 LA: MOV DL,BUF[SI]

CMP DL,'A' JB PUT CMP DL,'Z' JBE PUTCHG PUT:INT 21H JMP LAD PUTCHG: ADD DL,32 INT 21H LAD:INC SI DEC ACC MOV DH,ACC CMP DH,0 JZ EXIT JMP LA EXIT:

MOV AH,4CH INT 21H CODE ENDS END START

7. 请任意输入一个字符串,将其中的英文字母全部删除,并将结果显示在屏幕上。

DATA SEGMENT

INP DB 'Please input a CHAR DB 0 ACC DB 0 BUF DB 50 DB ? DB 50 DUP(0) string:','$'

CS:CODE,DS:DATA START:

MOV AX,DATA MOV DS,AX

MOV AH,9 LEA DX,INP

INT 21H ;提示输入字符串

MOV AH,0AH LEA DX,BUF INT 21H MOV AH,2

MOV DL,0DH INT 21H MOV DL,0AH

INT 21H ;输入字符串

LEA SI,BUF MOV DL,[SI+1]

MOV ACC,DL ;记录字符串个数

MOV SI,2 MOV AH,2 LA: MOV DL,BUF[SI] CMP DL,'A'

DATA ENDS STACK SEGMENT

DB 100 DUP(0) STACK ENDS CODE SEGMENT

ASSUME

JB PUT CMP DL,'Z' JBE LAD CMP DL,'a' JB PUT CMP DL,'z' JBE LAD PUT:

INT 21H JMP LAD LAD:INC SI DEC ACC

MOV DH,ACC CMP DH,0 JZ EXIT JMP LA

EXIT:

MOV AH,4CH INT 21H CODE ENDS END START


第二篇:北理工8086汇编语言考试上机试题及答案(一)


1. 请任意输入一个字符串,将该串倒序后在屏幕上显示。

2. 请任意输入一个字符串,统计其中空格和A的个数,并将结果显示在屏幕上。

3. 请任意输入一个字符串,将其中的空格全部删除,并将结果显示在屏幕上。

4. 请任意输入一个字符串,将其中A换成B,并将结果显示在屏幕上。

5. 请任意输入一个字符串,将其中A换成CC,并将结果显示在屏幕上。

data segment

buf1db 100

db ?

db 100 dup(?)

buf2db 100 dup(?)

buf3db '$'

buf4db 0dh,0ah,'$'

data ends

code segment

assumecs:code,ds:data,es:data

mainproc far

movax,data

movds,ax

moves,ax

mov ah,0ah

lea dx,buf1

int 21h

lea si,buf1

lea bx,buf1+2

mov cl,[si+1]

mov ch,0

movsi,cx

decsi

lea di,buf2

again: mov ax,[bx][si]

mov [di],ax

decsi

inc di

dec cl

jnz again

mov al,buf3

mov [di],al

mov ah,9

lea dx,buf4

int 21h

mov ah,9

lea dx,buf2

int 21h

mov ah,4ch

int 21h

mainendp

code ends

end main

data segment

buf1 db 100

db ?

db 100 dup(?)

buf2 db 0dh,0ah,'$' mem1 db 0

mem2 db 0

data ends

code segment

assumecs:code,ds:data,es:data main proc far

movax,data

movds,ax

moves,ax

mov ah,0ah

lea dx,buf1

int 21h

lea di,buf1+2

lea si,buf1+1

mov cl,[si]

mov ch,0

mov bl,0

mov bh,0

again:mov al,[di] cmp al,41h

jnz next

incbl

jmpdisp

next: cmp al,20h jnzdisp

incbh

disp: inc di

dec cl jnz again

mov ah,9 lea dx,buf2 int 21h moval,bl mov ah,0 callprintf

mov ah,9 lea dx,buf2 int 21h moval,bh mov ah,0 callprintf

mov ah,4ch int 21h main endp printfproc near lea si,mem1 mov cl,10 div cl

mov [si],ah add al,30h mov ah,2 movdl,al int 21h mov al,[si] mov ah,0 mov cl,1 div cl add al,30h mov ah,2 movdl,al int 21h ret

printfendp code ends end main

data segment

bufdb 100

db ?

db 100 dup(?) buf1db 0dh,0ah,'$' data ends

code segment

assumecs:code,ds:data,es:data mainproc far

movax,data

movds,ax

moves,ax

mov ah,0ah

leadx,buf

int 21h

lea si,buf+1

mov al,[si]

movcl,al

movch,al

movdh,al

incsi

again: mov al,[si]

cmp al,20h

jnz next

call delete

decch

jmp kaka

next: incsi

kaka: dec cl

jnz again

lea di,buf+2

disp: inc di

decch

jnzdisp

mov ah,24h

mov [di],ah

mov ah,9

lea dx,buf1

int 21h

mov ah,9

lea dx,buf+2

int 21h

mov ah,4ch

int 21h

mainendp

deleteproc near

movdi,si

movdl,dh

again1:mov ah,[di+1] mov [di],ah

inc di

dec dl

jnz again1

ret

deleteendp

code ends

end main

data segment

bufdb 100

db ?

db 100 dup(?)

buf1db 0dh,0ah,'$' count db 0

data ends

code segment

assumecs:code,ds:data,es:data mainproc far

movax,data

movds,ax

moves,ax

mov ah,0ah

leadx,buf

int 21h

lea si,buf+1

mov cl,[si]

movch,[si]

lea si,buf+2

again: mov al,[si]

cmp al,41h

jnz next

call insert

incch

inc count

incsi

next: incsi inc count dec cl jnz again lea di,buf+2 kaka: inc di decch jnz kaka mov al,24h mov [di],al mov ah,9 lea dx,buf1 int 21h mov ah,9 lea dx,buf+2 int 21h mov ah,4ch int 21h mainendp

insertproc near movdh,ch subdh,count movdl,ch lea di,buf+2 mac: inc di dec dl jnz mac

again1:movbl,[di] mov [di+1],bl dec di dec dh jnz again1 mov bh,43h mov [si],bh mov [si+1],bh ret

insertendp

code ends end main

answer5:

data segment

bufdb 100

db ?

db 100 dup(?)

buf1db 0dh,0ah,'$' data ends

code segment

assumecs:code,ds:data,es:data mainproc far

movax,data

movds,ax

moves,ax

mov ah,0ah

leadx,buf

int 21h

lea si,buf+1

mov cl,[si]

mov ch,0

incsi

again: mov al,[si]

cmp al,60h

ja next

mov ah,20h

or al,ah

mov [si],al

next: incsi

loop again

mov bl,24h

mov [si],bl

mov ah,9

lea dx,buf1

int 21h

mov ah,9

lea dx,buf+2

int 21h

mov ah,4ch

int 21h

mainendp

code ends

end main

更多相关推荐:
北京理工大学汇编实验报告 2

算术运算类操作实验1对于两组无符号数087H和034H0C2H和5FH试编程求这两组数的和差积商并考虑计算结果对标志寄存器中状态寄存器的影响程序代码087H034HDATASSEGMENTBUF1DB087HB...

北京理工大学汇编语言实验报告一

汇编语言实验报告实验一DOS环境下的汇编语言编程环境使用基础与验证型班级05211002姓名张宁学号1120xx2310实验日期20xx97晚600900班级05211002姓名张宁学号1120xx2310实验...

北京理工大学汇编语言实验五 子程序设计实验

实验五子程序设计实验设计性实验一实验要求和目的1熟悉汇编语言程序设计结构2熟悉汇编语言子程序设计方法3熟悉利用汇编语言子程序参数传递方法4熟悉汇编语言字符串处理基本指令的使用方法5掌握利用汇编语言实现字符串的输...

北京理工大学汇编第四次(分支和循环程序设计实验)报告

汇编第四次分支和循环程序设计实验报告一实验要求和目的1熟悉汇编语言程序设计结构2熟悉汇编语言分支程序基本指令的使用方法3掌握利用汇编语言实现单分支双分支多分支的程序设计方法4了解汇编语言循环程序设计的基本流程5...

北理工汇编语言实验报告6

汇编语言实验报告第六章磁盘文件存取实验设计性实验班级05611102姓名肖枫学号1120xx1431实验日期20xx914下午第六章磁盘文件存取实验设计性实验一实验要求和目的1理解文件目录的概念2了解FCB文件...

北京理工大学汇编实验一实验报告

本科实验报告实验名称DOS环境下的汇编语言编程环境使用实验一DOS环境下的汇编语言编程环境使用基础与验证型一实验要求和目的1掌握汇编语言程序设计的基本流程和学会上机开发简单程序2熟练掌握宏汇编程序MASM的使用...

北京理工大学汇编实验五实验报告

本科实验报告实验名称子程序设计实验实验五子程序设计实验设计性实验一实验要求和目的1熟悉汇编语言程序设计结构2熟悉汇编语言子程序设计方法3熟悉利用汇编语言子程序参数传递方法4熟悉汇编语言字符串处理基本指令的使用方...

20xx年北京理工大学工业设计考研参考书笔记汇编

才思教育网址20xx年北京理工大学工业设计考研辅导班笔记汇编各位考研的同学们大家好我是才思的一名学员现在已经顺利的考北京理工大学工业设计专业今天和大家分享一下这个专业的笔记方便大家准备考研希望给大家一定的帮助考...

北京理工大学微机原理实验报告一

本科实验报告实验名称基于并行接口的键盘控制实验一基于并行接口的键盘控制一实验目的1掌握简单并行接口8255的工作原理及使用方法2了解小键盘的工作原理学会设计小键盘的接口技术3利用8255并行接口芯片作为小键盘的...

北京理工大学微机原理实验报告二

本科实验报告实验名称利用中断方式设计数字时钟实验二利用中断方式设计数字时钟一实验目的1掌握PC机中断处理系统的基本原理2熟悉定时计数器8254工作原理及其编程方法3利用实验板上的8254定时器为中断源发中断申请...

20xx年北京理工大学电路、信号与系统考研真题(完整版)凯程首发

凯程考研集训营为学生引路为学员服务20xx年北京理工大学电路信号与系统考研真题完整版凯程首发刚考完20xx考研初试凯程教育的电话瞬间变成了热线同学们兴奋地汇报自己的答题情况几乎所有内容都在凯程考研集训营系统训练...

北京理工大学882电路、信号与系统考试大纲

理硕教育专注于北理工考研辅导本资料由理硕教育整理理硕教育是全国唯一专注于北理工考研辅导的学校相对于其它机构理硕教育有得天独厚的优势丰富的理工内部资料资源与人力资源确保每个学员都受益匪浅确保理硕教育的学员初试通过...

北京理工大学汇编实验报告(13篇)