实验一
1.将内存fff:0~fff:b中的数据复制到0:200~0:20b单元中 要求:分别采用堆栈和常规访问实现
assume cs:codes
codes segment
start:
;第一种方式采取传统访址
; mov bx,0
; mov cx,12
;用字节复制12次
; s:mov ax,0FFFFh
; mov ds,ax
; mov dh,[bx]
; mov ax,0000h
; mov ds,ax
; mov [bx+200h],dh
; inc bx
; Loop s
; mov ah,4ch
; int 21h
;第二种方式采取堆栈访址
mov bx,0
;堆栈以字为处理单位循环6次
mov cx,6
mov ax,0000h
;设置ss,sp
mov ss,ax
;当前sp为中转地址
mov sp,021ch
s:mov ax,0FFFFh
mov ds,ax
mov dx,[bx]
push dx
mov ax,0000h
mov ds,ax
pop [bx+200h]
add bx,2
Loop s
mov ah,4ch
int 21h
codes ends
end start
结果如下
2.从键盘输入两个1位的十进制数,相加以后以蓝底黄字显示在屏幕的第5行第16列。
assume cs:codes
datas segment
str1 db 'Please input first number:','$'
str2 db 'Please input second number:','$'
str3 db 0Ah,'$'
codes segment
start:
;调用系统清屏功能便于显示
mov ax,0003h
int 10h
;设置ds
mov ax,datas
mov ds,ax
;输出第一个提示信息
lea dx,str1
mov ah,9
int 21h
;读入第一个数字
mov ah,1
int 21h
mov cl,0
;转成数值大小存入cl
sub al,48
mov cl,al
;输出换行
lea dx,str3
mov ah,9
int 21h
;输出第二个提示信息
lea dx,str2
mov ah,9
int 21h
;读入第二个数字
mov ah,1
int 21h
;转成数值大小
sub al,48
;相加得值
add cl,al
;设置显存段地址
mov ax,0b800h
mov es,ax
;比较加跳转
;如何是9以上跳入L1执行
cmp cl,9
jg L1
;显示两位数,其中十位始终为 0,个位直接加48显示
mov bl,48
mov es:[340h],bl
mov byte ptr es:[341h],1eh
add cl,48
mov es:[342h],cl
mov byte ptr es:[343h],1eh
mov ah,4ch
int 21h
L1:
;显示两位数,其中十位始终为 1,个位减10加48显示
mov bl,49
mov es:[340h],bl
mov byte ptr es:[341h],1eh
sub cl,10
add cl,48
mov es:[342h],cl
mov byte ptr es:[343h],1eh
mov ah,4ch
int 21h
codes ends
end start
结果如下
1.编程实现书上问题7.9
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
start:
mov ax,datasg
mov ds,ax
mov bx,0
mov si,0
mov cx,4
s:
;记得循环嵌套保存cx
mov ax,cx
mov cx,4
mov si,0
s0:
and byte ptr [bx+si+3],11011111b
inc si
Loop s0
add bx,16
mov cx,ax
Loop s
mov ah,4ch
int 21h
codesg ends
end start
效果如下
2.实验七
assume cs:codesg
data segment
db '1975','1976','1977','1978','1979','1980'
db '1981','1982','1983','1984','1985','1986'
db '1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
dw 3,7,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
data ends
table segment
db 21 dup('your summ ne ?? ')
table ends
codesg segment
start:
mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov si,0
mov di,0
mov bx,0
mov cx,21
s:
;year
mov ax,ds:[si]
mov es:[di],ax
mov ax,ds:[si+2]
mov es:[di+2],ax
;income
mov ax,ds:[si+84]
mov es:[di+5],ax
mov dx,ds:[si+84+2]
mov es:[di+7],dx
;number
mov bp,ds:[bx+168]
mov es:[di+10],bp
;直接用内存单元中的数做除数
div word ptr ds:[bx+168]
mov es:[di+13],ax
;步长不同
add si,4
add bx,2
add di,16
Loop s
mov ah,4ch
int 21h
codesg ends
end start
效果如下
3.将任意输入的十进制数(
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?