《微型计算机原理及应用》作业。
作业组别:第十二组。
班级:09级车辆工程一班。
姓名:黄季珍。
学号:0901***
作业指导教师:李艳文。
作业完成时间:2023年4月27日。
十二组题。13、内存中source处存放着10个0~9之间的数字的ascii码或空白符(sp)的ascii码。要求将0~9之间的数字的ascii码转换为相应的八位二进制数,并将空白符(sp)的ascii码转换为$字符的ascii码。
处理结果存放到result处。
67.把在bx寄存器对中的恶6位带符号二进制数转换为十进制数,且把符号位及各位十进制码转换为相应的ascii码,放到自data开始的7个储存单元中,最后填以空格。
82.编写子程序。用给定的字,填充一指定的内存区域,该内存区域的起始位置位于di中,需填充的内存单元个数位于cx中。主程序调用子程序实现上述功能。
13题程序。
model small
stack 100
datasource db 20h, 30h, 31h, 33h, 35h, 20h, 39h, 38h, 37h, 34h
count equ $-source
result db count dup (?
codestart: mov ax,@data
mov ds,ax
mov si,offset source
mov di,offset result
mov cx,count
again: mov al,[si]
cmp al,20h
ja again1
cmp al,25h
jb again2
again1: sub al,30h
mov [di],al
inc si
inc di
loop again
jmp done
again2: mov al,24h
mov [di],al
inc si
inc di
loop again
jmp done
done :
mov ax,4c00h
int 21h
end start
67题程序。
.model small
.stack
.datadb 7 dup("
.codestart: mov ax,@data ;程序开始点。
mov ds,ax ; 设置ds指向数据段地址。
mov ax,1234h ;ax=1234h;表示有符号二进制数。
mov di,0将di清零。
test ax,1234h
mov data,'+
jns plus利用符号标志sf=1,若是”+”则进行plus
and ax,07fffh ; 将二进制数转换成十进制说。
mov data,'-
jia: cwd符号扩展。
mov bx,10 ;bx=10
idiv bx有符号数除法。
add dx,0030h ;将十进制数转换成相应的ascii码,dx=0031h
push dx将dx内容堆入栈顶,保护寄存器数值。
inc didi依次加1
cmp ax,0 ;将ax和0比较。
jz done标志位zf=1,程序转移。
loop jia ; 循环jia
done: mov ax,di ; 将di的数值送给ax
mov cx,ax ;将ax的数值送给cx
mov si,1si=1
storage: pop dx恢复使用到的寄存器的数值。
mov data[si],dl
inc sisi依次加1
loop storage ;循环storage
mov ax,4c00h
int 21h; ;程序结束点,返回dos
code ends**段结束。
end start
82.题程序。
model small
stackdata
count =10
stall db count dup(0)
codestart: mov ax,@data ;程序开始点。
mov ds,ax ; 设置ds指向数据段地址。
mov es,ax ; 将ax内容送给附加段es
call htoasc ; 调用子程序。
mov ax,4c00h
int 21h ;程序结束点,返回dos
htoasc proc
mov ax,'aa' ;将字符串aa的ascii码送给ax
mov di,offset string ;将内存string的初始地址放在di中。
mov cx,200将需填充的内存单元个数放在cx中。
rep stosw填充在string的内存区域。
ret子程序返回。
htoasc endp子程序结束。
code ends
end start