第1次作业

参照第一章的操作方法,修改 mbr.asm,实现以下功能:完成 2 个 100 以内的正整

数乘积,并把乘积结果显示在屏幕上。

这里,我求

    95 * 95 = 9025

下列为所需汇编代码及结果

           ORG 0x7c00
start:     JMP entry
entry:     MOV AX,0
           MOV SS,AX
           MOV DS,AX
           MOV ES,AX
           MOV SP,0x7c00

           MOV AX,95         ;设置乘数
           MOV DX,95         ;设置乘数
           MUL DX            ;两数相乘并存入AX
           MOV DX, 0
           MOV CX,0
           MOV BX, 10
LP:        IDIV BX           ;进行除法并把余数存入DX
           PUSH DX           ;把余数压入栈
           PUSH AX
           ADD CX,1          ;记录压入栈的余数个数
           POP AX
           CWD
           CMP AX, 0         ;判断余数是否为零,不为零则继续循环
           JNZ LP
                            
putloop:                     ;取出数据并显示在虚拟机中
           SUB CL,1
           POP DX    
           MOV AL,DL         ;AL存放要显示的数据
           ADD AL,30H

                             ;接下来显示AL中的数据
           MOV AH,0x0e
           MOV BX,0x0f
           INT 0x10

           CMP CL,0
           JA putloop
           JMP fin

     
fin:       HLT               ;fin为死循环
           JMP fin
marker:    TIMES (0x01fe-marker+start) DB 0
           DB 0x55, 0xaa

第1次作业_第1张图片

在这里我提一下,我只是在代码中给定了两个乘数,并不是输入两个乘数。

其实也就是将上述汇编代码保存为.asm格式,在命令行输入命令nasm 文件名.asm -o 生成的文件名.bin

nasm 文件名.asm -o 生成的文件名.bin

例如
nasm mbr.asm -o mbr.bin

接下来在Hex Editor Neo新建A.img(什么名字都行,为.img格式就行),并将其大小改为1440KB。

然后,将用Hex Editor Neo打开生成的mbr.bin,复制,粘贴到A.img的第一个字节中。最后将虚拟机中的软盘映像文件改为A.img,再开启虚拟机,即可显示结果。

具体步骤与这篇文章操作系统第一篇http://t.csdn.cn/TJ8Bi相似。

你可能感兴趣的:(操作系统,程序人生)